linux socket认识
linux 在C的方式下,服务端的创建主要包括几个模块:套节字的创建、封装IP地址和端口号以及socket连接方式、绑定socket和封装的struct sockaddr_in,
监听的执行、开启服务端,接受client链接、接受客户端消息、发送服务端消息。
套节字的创建:
代码:
int socket;
socket = new Socket(AF_INET,SOCK_STREAM,0);
注释:
1.AF_INET:IPV4网络协议
2.AF_INET6:IPV6网络协议
3.SOCK_STREAM:面向链接的TCP协议
4.SOCK_DGRAM:非链接的UDP协议
封装IP地址和端口号:
代码:
struct sockaddr_in server;
int port = 8888;
bzero(&server,sizeof(server));
server.sin_family=AF_INET
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(port);
注释:
1.bzero();用来初始化struct sockaddr_in
2.sin_family设置网络协议,只能是AF_INET
3.sin_addr.s_addr用来设置IP地址,INADDR_ANY代表本机IP地址
4.sin_port用来设置端口号
绑定socket和struct sockaddr_in
代码:
bind(sock,(struct sockaddr*)&server,sizeof(struct sockaddr));
注释:
bind(sock句柄,struct sockaddr_in指针,struct sockaddr_in长度);
开启监听等待客户端连接:
代码:
struct sockaddr_in temp;
int addresssize;
int client_sock;
while(1)
{
client_sock=accept(sock,(struct sockaddr_in*)&temp,&addresssize);
}
收发客户端数据:
char buf[1024];
int len;
recv(client_sock,buf,1024,0);
printf("client recv:%s\n",buf);
len=strlen(buf);
send(client_sock,buf,len,0);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。