陈奇网络工作室

linux高性能网络编程阅读笔记插座数据读写

建设工作站服务器

数据的读写分为TCP数据的读写、UDP数据的读写、通用数据的读写

1 .读写TCP数据

定义:套接字连接用户空间和内核空间,TCP和UDP是内核第1层。

描述:文件的读和写也适用于套接字

示例:对TCP流数据的系统调用

1.1ssize_trecv(intsockfd,void buf,size_t len,int flags );

1.2ssize_tsend(intsockfd,const void buf,size_t len,int flags );

参数说明:

1.3buf和len是指缓冲区的位置和大小

1.3.1flags通常为0

recv正常返回实际读取的数据的长度

注:实际读取长度可能短于预期的len,因此必须多次调用recv

recv可能返回0意味着通信方已经关闭了连接

recv错误恢复为-1,设置错误

1.4send基本相同

发送的实例代码

intmain(intargc,char *argv[] ) ) ) )

if(argc=2) {

printf (参数为错误);

}

//一系列上一个连接

connect ( sockfd,) struct sockaddr* ) server_address,sizeof ( server _ address ) )0) {

打印(连接失败);

}else{

const char* oob_data=abc;

const char* normal_data=123;

send(sockfd,normal_data,strlen ) normal_data ),0 );

sned(sockEFD,oob_data,strlen ) oob_data ).MSG_OOB );

send(sockfd,normal_data,strlen ) normal_data ),0 );

}

close(sockfd;

返回0;

}

//接收代码也相似

//连接成功

intconnfd=accept(sock,( struct sockaddr * ) client,client_addrlength );

char buffer[BUF_SIZE];

memset(buffer,\\\& quot; \& quot;( ( (0\\&amp ); quot;) )、BUF_SIZE );

ret=recv(connfd,buffer,buf _ size-1,0 );

close(connfd );

close(sock;

返回0;

./testoobrecv 192.168.1.109 54321

./testoobsend 192.168.1.109 54321

tcpdump -ntx -i eth0 port 54321

注意: flags参数只对send和recv的当前调用有效,可以使用setsockket系统调用永久更改套接字的某些属性

详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3