您的位置:首页 > 理论基础 > 计算机网络

socket网络通信(tcp)

2011-04-01 16:00 309 查看
1、Socket服务器端:

在工程中设置:link里面加上ws32_2.dll

          #include <Winsock2.h>  

#include <stdio.h>   
  
void main()   
{   
    //加载套接字   
    WORD wVersionRequested;   
    WSADATA wsaData;   
    int err;   
       
    wVersionRequested=MAKEWORD(1,1);   
       
    err=WSAStartup(wVersionRequested,&wsaData);   
    if (err!=0)   
    {   
        return;   
    }   
       
    if (LOBYTE(wsaData.wVersion)!=1||   
        HIBYTE(wsaData.wVersion)!=1)   
    {   
        WSACleanup();   
        return;   
    }   
       
    //创建监听的套接字   
    SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);   
       
    SOCKADDR_IN addrSrv;   
    addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序   
    addrSrv.sin_family=AF_INET;   
    addrSrv.sin_port=htons(6000);   
       
    //绑定套接字   
    bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));   
    //将套接字设置为监听模式,准备接受用户请求   
    listen(sockSrv,5);   
       
    SOCKADDR_IN addrClient;   
    int len=sizeof(SOCKADDR);   
       
    printf("%s/n","welcome,the serve is started...");   
    while (1)   
    {   
        //等待用户请求到来   
        SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);   
        char sendBuf[100];   
        sprintf(sendBuf,"welcome %s to http://unblue2008.javaeye.com",inet_ntoa(addrClient.sin_addr));   
           
        //发送数据   
        send(sockConn,sendBuf,100,0);   
        char revBuf[100];   
           
        //接收数据   
        recv(sockConn,revBuf,100,0);   
        //打印接受数据   
        printf("%s/n",revBuf);   
           
        //关闭套接字   
        closesocket(sockConn);   
    }      
}  
Socket客户端:

 

#include <Winsock2.h>   
#include <stdio.h>   
  
void main()   
{   
    //加载套接字   
    WORD wVersionRequested;   
    WSADATA wsaData;   
    int err;   
       
    wVersionRequested=MAKEWORD(1,1);   
       
    err=WSAStartup(wVersionRequested,&wsaData);   
    if (err!=0)   
    {   
        return;   
    }   
       
    if (LOBYTE(wsaData.wVersion)!=1||   
        HIBYTE(wsaData.wVersion)!=1)   
    {   
        WSACleanup();   
        return;   
    }   
  
    //创建套接字   
    SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);   
       
    SOCKADDR_IN addrSrv;   
    addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序   
    addrSrv.sin_family=AF_INET;   
    addrSrv.sin_port=htons(6000);   
  
    //向服务器发送请求   
    connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));   
       
    //接受数据   
    char recBuf[100];   
    recv(sockClient,recBuf,100,0);   
    printf("%s/n",recBuf);   
       
    //发送数据   
    send(sockClient,"this is 扈修非",strlen("this is 扈修非")+1,0);   
    //关闭套接字   
    closesocket(sockClient);   
    WSACleanup();   
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息