建站服务器
数据读写分为tcp数据读写,udp数据读写,通用数据读写
1.tcp数据读写
定义:socket是连接用户空间和内核空间,tcp和udp是内核第一层。
解释:对于文件的read和write同样适用于socket
例子:对于tcp流数据的系统调用
1.1ssize_t recv(int sockfd,void buf,size_t len,int flags);
1.2ssize_t send(int sockfd,const void buf,size_t len,int flags);
参数解释:
1.3buf和len是指缓存区的位置和大小
1.3.1flags通常为0
recv成功返回实际读取到的数据的长度
注:实际读取的长度可能小于期望len,所以要多次调用recv
recv可能返回0,意味着通信对方已经关闭了连接
recv出错返回-1并设置errno
1.4send基本上同上
发送的实例代码
int main(int argc, char *argv[]){ if(argc<=2){ printf(参数是错误); } //一系列之前的连接 if(connect(sockfd,(struct sockaddr*) &server_address,sizeof(server_address))<0){ printf(连接失败); }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); return 0; } //接收代码也是类似的 //连接成功 int connfd = accept(sock,(struct sockaddr *) &client,&client_addrlength); char buffer[buf_size]; memset(buffer,\\\'\\\\0\\\',buf_size); ret = recv(connfd,buffer,buf_size-1,0); close(connfd); close(sock); return 0; ./testoobrecv 192.168.1.109 54321 ./testoobsend 192.168.1.109 54321 tcpdump -ntx -i eth0 port 54321 注:flags参数只对send和recv的当前调用生效,可以使用setsockket系统调用来永久性修改socket的某些属性
阿里云服务器到期不续费域名和企业网站的关系 建网站只要注册域名就行了吗我的互联网记录:从景安郑州机房事件给自己的警惕用友的云服务器费用一年是多少我要注册的域名提交实名审核的时候云服务服务器报价表托管服务器云服务区别没备案域名怎么接入阿里云服务器