标签归档:socket

c实现Socket通信

072435ab1srtrabhz5391h.gif.thumb_

程序分为服务端和客户端(服务端就相当于我们的网站服务器,客户端就相当于我们的浏览器)

在服务端,我们需要大致按照以下步骤:

1.初始化socket库。
2.绑定本机地址和端口。(服务端特有)
3.监听端口,等待客户端连接。
4.当有客户端连接,进行处理,但后继续监听或者结束程序。
5.退出程序,关闭socket,终止对socket库的使用。

在客户端,我们需要按照以下步骤:

1.初始化socket库。
2.设置远程主机的地址和端口信息,并连接。
3.等待服务端的响应
4.当服务端响应,进行处理。
5.退出程序,关闭socket,终止对socket库的使用。

下面引用一张来自网络的图片,直观的说明通信的过程。

下面是代码示例:

服务端:

#include 
#include 
int main(void)
{
        int len = 0;
        WSADATA wd;
        int ret = 0;
        SOCKET s,c;
        char sendBuf[1000]="", recvBuf[1000]="";
        SOCKADDR_IN saddr, caddr;
        ret = WSAStartup(MAKEWORD(2,2),&wd);  /*1.初始化操作(希望使用的WinSock DLL 的版本)*/
        
        if(ret != 0)
        {
                return 0;
        }
        if(HIBYTE(wd.wVersion)!=2 || LOBYTE(wd.wVersion)!=2)
        {
                printf("初始化失败");
                WSACleanup();
                return 1;
        }
        
        /*2.创建服务端socket*/
        s = socket(AF_INET, SOCK_STREAM, 0);
        
        /*3.设置服务端信息*/
        saddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
read more