建设工作站服务器
数据的读写分为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\\& ); 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