设为首页 加入收藏

TOP

基于Linux的TCP网络编程(三)
2014-11-24 12:02:50 来源: 作者: 【 】 浏览:2
Tags:基于 Linux TCP 网络编程
k_fd,(struct sockaddr *)&serv_add,sizeof(struct sockaddr))){


printf(“Error:unable to the establishconnection to socket(%i)…\n”,errno);


perror(“socks”);


close(sock_fd);


exit(1);


}


6. send(发送数据)


1>函数功能:函数send用来在TCP套接字上发送数据,send只能对处于连接状态的套接字使用。


2>函数原型


#include


#include


ssize_t send(int conn_fd,const void *msg,size_t len, int flags);


3>函数形参:


conn_fd:为已建立好连接的套接字描述符,即调用accept()函数后返回的套接字描述符。


msg:存放发送数据的缓冲区。


len:发送缓冲区的长度


flags:为控制选项,一般设置为0,或取以下值:


2 MSG_OOB:在指定的套接字上发送带外数据(out-of-band data),该类型的套接字必须支持带外数据(如:SOCK_STREAM).


2 MSG_DONTROUTE:通过最直接的路径发送数据,而忽略下层协议的路由设置。


4>返回值:


执行成功返回实际发送数据的字节数,出错则返回-1,错误代码存入errno中。


执行成功只是说明数据写入套接字的缓冲区中,并不表示数据已经成功地通过网络发送到目的地。


5>实例:


#define BUFFERSIZE 1500


char send_buf[BUFFERSIZE];


……


if(send(conn_fd,send_buf,len,0)< 0){


perror(“send”);


exit(1);


}


7. recv(接收数据)


1>函数功能:recv()用来TCP套接字上接收数据。函数recv从指定的套接字描述符上接收数据并保存到指定buf中。


2>函数原型


#include


#include


ssize_t recv(int conn_fd,void *buf,size_t len,int flags);


3>函数形参:


conn_fd: 为已建立好连接的套接字描述符,即调用accept()函数后返回的套接字描述符


buf:接收缓冲区


len:接收缓冲区的大小


flags:为控制选项,一般设置为0或取以下数值


2 MSG_OOB:请求接收带外数据


2 MSG_PEEK:只查看数据而不读出


2 MSG_WAITALL:只在接收缓冲区满时才返回。


4>函数返回值


函数执行成功返回接收到的数据字节数,出错返回-1,错误代码存入errno中。


5>实例:


#define BUFFERSIZE 1500


char recv_buf[BUFFERSIZE];


……


if(recv(conn_fd,recv_buf,sizeof(recv_buf),0)< 0){


perror(“recv”);


exit(1);


}


8. close


1>函数原型:


int close(int fd);


2>函数功能:


函数close用来关闭一个套接字描述符。


3>函数形参:


参数fd为一个套接字描述符。


4>返回值:


执行成功返回0,出错则返回-1.错误代码存入errno中。


说明:close()函数的头文件是#include.


首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于Linux下的UDP编程 下一篇Android SDK 中Android.net.wifi..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)
·[ Linux运维学习 ] (2025-12-26 02:52:27)
·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)