一、传输层socket(四层socket,普通socket)
可参考本人以下博客:
(1)创建
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
//TCP
//或者
socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
//UDP
AF_INEF表示TCP/IP族
第三个参数可以为0,由操作系统自行选择
(2)发送
sendto(sd,buffer,BUFSIZ,0,(SOCKADDR*)&addrServ,sizeof(SOCKADDR));//UDP
send(sd, buffer, BUFSIZ, 0); //TCP
(3)接收
recvfrom(sd,buffer,BUFSIZ,0,(SOCKADDR*)&addrClient,sizeof(SOCKADDR));//UDP
recv(sd, buffer, BUFSIZ, 0);//TCP
sd为socket标识符,buffer为接受/发送缓冲区,BUFSIZ为接受/发送缓冲区。后两个参数为发送或接受的对方地址,可以为NULL
二、网络层socket(三层socket)
可以参考本人一下博客或代码:
(1)创建
socket(AF_INET, SOCK_RAW, IPPROTO_UDP );//第三个参数可以是UDP,TCP或者ICMP
(2)接收
recvfrom(sd, buffer, sizeof(buffer), 0,(struct sockaddr *)&client_addr, &addrlen));//
后两个参数可以为null