spencer
新手上路
新手上路
  • 注册日期2014-01-02
  • 发帖数1
  • QQ1159931126
  • 火币43枚
  • 粉丝0
  • 关注0
阅读:1503回复:0

学习,socket

楼主#
更多 发布于:2014-01-02 21:28
新手上路,正在慢慢学习
//server
#include <WinSock2.h>
#include <stdio.h>
int main()
{
      // 加载套接字库
      WORD
wVersionRequested;
      WSADATA
wsaData;
      int err;
      wVersionRequested
= MAKEWORD(1, 1);
      err =
WSAStartup(wVersionRequested, &wsaData);
      if (err != 0)
             return
0;
      if
(LOBYTE(wsaData.wVersion) != 1 ||
             HIBYTE(wsaData.wVersion)
!= 1)
      {
             WSACleanup();
             return
0;
      }
      // 创建用于监听的套接字
      SOCKET
sockSrv = socket(AF_INET, SOCK_STREAM, 0);
      SOCKADDR_IN
addrSrv;
      addrSrv.sin_addr.S_un.S_addr
= htonl(INADDR_ANY);
      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);
      while (1)
      {
             // 等待客户请求到来
             SOCKET
sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);
             char
sendBuf[100];
             sprintf_s(sendBuf,"Welcome
%s to http://www.sina.com",
                    inet_ntoa(addrClient.sin_addr));
             // 发送数据
             send(sockConn,
sendBuf, strlen(sendBuf)+1, 0);
             char
recvBuf[100];
             // 接收数据
             recv(sockConn,
recvBuf, 100, 0);
             // 打印接收到的数据
             printf("%s\n",recvBuf);
             // 关闭套接字
             closesocket(sockConn);
      }
      return 0;

}
 
//client
#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");
      addrSrv.sin_family
= AF_INET;
      addrSrv.sin_port
= htons(6000);
      // 向服务器发出链接请求
      connect(sockClient,
(SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
      // 接收数据
      char
recvBuf[100];
      recv(sockClient,
recvBuf, 100, 0);
      printf_s("%s\n",
recvBuf);
      // 发送数据
      send(sockClient,
"This is a command", strlen("This is a command ")+1, 0);
      // 关闭套接字
      closesocket(sockClient);
      WSACleanup();
      return;

}

喜欢0 评分0
游客

返回顶部