Socket连接

//服务端

 

#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")

void main()
{
 //初始化套接字版本
 WSAData wsaData;
 WSAStartup(MAKEWORD(2,2),&wsaData);

 //创建Socket
 SOCKET Socket_Server;
 Socket_Server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
 if (Socket_Server == INVALID_SOCKET)
 {
  printf("Socket error");
  return;
 }

 //初始化地址
 sockaddr_in ClientAddr;
 ClientAddr.sin_family = AF_INET;
 ClientAddr.sin_port = htons(8000);
 ClientAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

 //循环连接
 while (true)
 {
  //连接
  if (connect(Socket_Server,(LPSOCKADDR)&ClientAddr,sizeof(ClientAddr)) == SOCKET_ERROR)
  {
   printf("connect error/n");
   Sleep(3000);
   continue;
  }
  printf("连接成功");
  break; 
 }

 //发送
 if (send(Socket_Server,"上线了",sizeof("上线了"),0) == SOCKET_ERROR)
 {
  printf("send error");
  return;
 }

 //关闭Socket
 closesocket(Socket_Server);
 WSACleanup();
}

 

//-----------------------------------------------------------------------------------------------------------

 

//客户端

 

CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)StartListen,NULL,NULL,NULL);

 

DWORD StartListen(LPARAM *lparam)
{
 WSAData wsaData;

 //初始化套接字版本
 WSAStartup(MAKEWORD(2,2),&wsaData); 
 
 SOCKET Socket_Client;
 
 //创建套接字
 Socket_Client = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
 if (Socket_Client == INVALID_SOCKET)
 {
  printf("socket error");
  return 0;
 }
 
 sockaddr_in sockaddr;

 //初始化地址信息
 sockaddr.sin_family = AF_INET;
 sockaddr.sin_port = htons(8000); //8000端口
 sockaddr.sin_addr.S_un.S_addr = INADDR_ANY; //表示所有可用的地址
 
 //绑定套接字
 if (bind(Socket_Client,(LPSOCKADDR)&sockaddr,sizeof(sockaddr)) == SOCKET_ERROR)
 {
  printf("bind error");
  return 0;
 }
 
 //监听
 if (listen(Socket_Client,5) == SOCKET_ERROR)
 {
  printf("listen error");
  return 0;
 }

 SOCKET Socket_Server; //客户端
 sockaddr_in remoteAddr; //服务端地址
 int Addrlen = sizeof(remoteAddr);
 char revData[255];

 while (true)
 {
  //接收连接
  Socket_Server = accept(Socket_Client,(LPSOCKADDR)&remoteAddr,&Addrlen);
  if (Socket_Client == INVALID_SOCKET)
  {
   printf("accept error");
   continue;
  }
  OutputDebugString("连接成功");
  
  //接收数据
  int ret = recv(Socket_Server,revData,sizeof(revData),0);
  if (ret > 0)
  {
   MessageBox(0,revData,0,0);
  }
 
 }
 
 closesocket(Socket_Server);  //关闭socket
 WSACleanup();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值