简单的 C++ SOCKET编程 ---基于TCP/IP协议

server端:
  
#include <WINSOCK2.H>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
  //创建套接字
  WORD myVersionRequest;
  WSADATA wsaData;
  myVersionRequest=MAKEWORD(1,1);
  int err;
  err=WSAStartup(myVersionRequest,&wsaData);
  if (!err)
  {
   printf ( "已打开套接字\n" );
  }
  else
  {
   //进一步绑定套接字
   printf ( "嵌套字未打开!" );
   return ;
  }
  SOCKET serSocket=socket(AF_INET,SOCK_STREAM,0); //创建了可识别套接字
  //需要绑定的参数
  SOCKADDR_IN addr;
  addr.sin_family=AF_INET;
  addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //ip地址
  addr.sin_port=htons(6000); //绑定端口
  
  bind(serSocket,(SOCKADDR*)&addr, sizeof (SOCKADDR)); //绑定完成
  listen(serSocket,5); //其中第二个参数代表能够接收的最多的连接数
  
  //
  //开始进行监听
  //
  SOCKADDR_IN clientsocket;
  int len= sizeof (SOCKADDR);
  while (1)
  {
   SOCKET serConn=accept(serSocket,(SOCKADDR*)&clientsocket,&len); //如果这里不是accept而是conection的话。。就会不断的监听
   char sendBuf[100];
   
   sprintf (sendBuf, "welcome %s to bejing" ,inet_ntoa(clientsocket.sin_addr)); //找对对应的IP并且将这行字打印到那里
   send(serConn,sendBuf, strlen (sendBuf)+1,0);
   char receiveBuf[100]; //接收
   recv(serConn,receiveBuf, strlen (receiveBuf)+1,0);
   printf ( "%s\n" ,receiveBuf);
   closesocket(serConn); //关闭
  WSACleanup(); //释放资源的操作
  }
}
  
  
  
client端:
  
 
#include <WINSOCK2.H>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
  int err;
  WORD versionRequired;
  WSADATA wsaData;
  versionRequired=MAKEWORD(1,1);
  err=WSAStartup(versionRequired,&wsaData); //协议库的版本信息
  if (!err)
  {
   printf ( "客户端嵌套字已经打开!\n" );
  }
  else
  {
   printf ( "客户端的嵌套字打开失败!\n" );
   return ; //结束
  }
  SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,0);
  SOCKADDR_IN clientsock_in;
  clientsock_in.sin_addr.S_un.S_addr=inet_addr( "127.0.0.1" );
  clientsock_in.sin_family=AF_INET;
  clientsock_in.sin_port=htons(6000);
  //bind(clientSocket,(SOCKADDR*)&clientsock_in,strlen(SOCKADDR));//注意第三个参数
  //listen(clientSocket,5);
  connect(clientSocket,(SOCKADDR*)&clientsock_in, sizeof (SOCKADDR)); //开始连接
  char receiveBuf[100];
  recv(clientSocket,receiveBuf,101,0);
  printf ( "%s\n" ,receiveBuf);
  send(clientSocket, "hello,this is client" , strlen ( "hello,this is client" )+1,0);
  closesocket(clientSocket);
  WSACleanup();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值