建立TCP通信

Server端设计:
1.初始化套接字版本:
  1. //初始化套接字版本 2.2
  2. WSADATA wsaData;
  3. WORD wVersion = MAKEWORD(2,2);
  4. int err = WSAStartup(wVersion,&wsaData);
  5. if(err != 0)
  6.   return FALSE;

2.建立TCP套接字并处于监听状态:

  1. //填充本地地址信息
  2. SOCKADDR_IN addrSer;
  3. memset(&addrSer,0,sizeof(addrSer));
  4. addrSer.sin_family = AF_INET;
  5. addrSer.sin_port = htons(m_nPort);
  6. addrSer.sin_addr.s_addr = inet_addr("10.1.17.212");
  7. //建立套接字
  8. m_Listen =socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  9. if (m_Listen == SOCKET_ERROR)
  10.    return ;
  11. //绑定本地地址
  12. if (bind(m_Listen,(SOCKADDR*)&addrSer,sizeof(SOCKADDR)) != 0)
  13.    return;
  14. //监听
  15. if (listen(m_Listen,SOMAXCONN) != 0)
  16.    return ;
  17. //等待用户连接
  18. while(1)
  19. {
  20.     SOCKET ClientSock = accept(m_Listen,NULL,NULL);
  21.     if(ClientSock == SOCKET_ERROR)
  22.     {
  23.       //退出
  24.     }
  25.     //发送信息
  26.     send(ClientSock,"Hello!",7,0);
  27.     TCHAR szBuf[MAX_PATH] = {0};
  28.     //接收对方发送来的信息
  29.     int nRecv = recv(ClientSock,(char*)szBuf,MAX_PATH*sizeof(TCHAR),0);
  30.     //其他..
  31. }

Client端设计:

  1. //version 2.2
  2. WSADATA wsaData;
  3. WORD wVersion = MAKEWORD(2,2);
  4. int err = WSAStartup(wVersion,&wsaData);
  5. if(err != 0)
  6.    return FALSE;
  1. SOCKADDR_IN addrClient,addrSer;
  2. 建立
  3. SOCKET m_Client = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
  4. //填充本地地址
  5. memset(&addrClient,0,sizeof(SOCKADDR));
  6. addrClient.sin_family = AF_INET;
  7. addrClient.sin_port = htons(8080);
  8. addrClient.sin_addr.s_addr = inet_addr("127.0.0.1");
  9. //绑定本地地址,客户端可以不绑定
  10. int nRet = bind(m_Client,(SOCKADDR*)&addrClient,sizeof(SOCKADDR));
  11. //填充Server地址
  12. memset(&addrSer,0,sizeof(addrSer));
  13. addrSer.sin_family = AF_INET;
  14. addrSer.sin_port = htons(6060);
  15. addrSer.sin_addr.s_addr = inet_addr("127.0.0.1");
  16. //建立连接请求
  17. nRet = connect(m_Client,(SOCKADDR*)&addrSer,sizeof(SOCKADDR));
  18. if (nRet != 0)
  19.    return ;
  20. TCHAR szBuf[MAX_PATH] = {_T("Hello!")};
  21. nRet = send(m_Client,(char*)szBuf,MAX_PATH*sizeof(TCHAR),0);
  22. if(nRet == SOCKET_ERROR)
  23.   //发送失败
  24. int nRecv = recv(m_Client,(char*)szBuf,MAX_PATH*sizeof(TCHAR),0);
  25.   //显示...

现在建立好的服务端和客户端都是阻塞式通信,TCP通信基本内容就是首先建立套接字,然后服务端处于监听状态等待用户连接,连接完成后就可以开始通信了。今天先写到这儿吧,明天写UDP阻塞式通信的建立。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值