TCP server

void CServerDlg::OnBUTTONOpen()
{
 //加载WSA
//  WORD wVersionRequested;
//  WSADATA wsaData;
//  int err;
//  wVersionRequested = MAKEWORD( 2, 2 );
//  err = WSAStartup( wVersionRequested, &wsaData );
//  if ( err != 0 ) {
//   return;
//  }
//  if ( LOBYTE( wsaData.wVersion ) != 2 ||
//         HIBYTE( wsaData.wVersion ) != 2 ) {
//   WSACleanup( );
//   return;
//  }

 //创建端口socket
 mysocket = socket(AF_INET,SOCK_STREAM,0);
 if (mysocket == INVALID_SOCKET)
 {
  MessageBox(L"MySocket failed");
  return ;
 }
 else
 {
  MessageBox(L"MySocket Success");
 }
 //绑定端口
 sockaddr_in serversocketinfo;
 serversocketinfo.sin_family = AF_INET;
 serversocketinfo.sin_port = htons(10000);
 serversocketinfo.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
 if (bind(mysocket,(sockaddr*)&serversocketinfo,sizeof(serversocketinfo))==0)
 {
  MessageBox(L"Bind Success");
 }
 else
 {
  MessageBox(L"Bind failed");
  return ;
 }
 //监听
 if (listen(mysocket,5)==0)
 {
  MessageBox(L"Listen Success");
 }
 else
 {
  MessageBox(L"Listen failed");
  return ;
 }
 //创建连接的线程
 ThreadHandleAccept = CreateThread(NULL,0,ThreadAccept,&mysocket,NULL,NULL);
 //创建接收的线程
 //ThreadHandleRecv = CreateThread(NULL,0,ThreadRecv,&mysocket,NULL,NULL);
}

DWORD WINAPI ThreadAccept(LPVOID lparam)
{
 SOCKET *mainsocket = (SOCKET*)lparam;
 SOCKET clientsocket;
 sockaddr_in receiveinfo;
 int size = sizeof(receiveinfo);
 char *buf = new char[100];
 memset(buf,0,100);
 buf = "Connection Success,Welcome to Server";
 while (1)
 {
  clientsocket = accept(*mainsocket,(sockaddr*)&receiveinfo,&size);//获取连接过来的客户机socket
  send(clientsocket,buf,strlen(buf),0);
  if (clientsocket != INVALID_SOCKET)
  {
   HANDLE ThreadHandleRecv = CreateThread(NULL,0,ThreadRecv,&clientsocket,NULL,NULL);
  }
 }
 return 0;
}

DWORD WINAPI ThreadRecv(LPVOID lparam)
{
 SOCKET *clientsocket = (SOCKET*)lparam;
 char *buf = new char[1024];
 CServerDlg* p = (CServerDlg*)AfxGetApp()->GetMainWnd();
 while(1)
 {
  memset(buf,0,1024);
  recv(*clientsocket,buf,1024,0);
  if (buf[0] != '/0')
  {
   p->m_ServerEdit_val += buf;
   p->SetDlgItemText(IDC_EDIT1,p->m_ServerEdit_val);
  }
  send(*clientsocket,"OK",2,0);

 }
 return 0;
}

void CServerDlg::OnBUTTONClose()
{
 closesocket(mysocket);
 WSACleanup();
 if(TerminateThread(ThreadHandleAccept,0))
 {
  CloseHandle(ThreadHandleAccept);
  MessageBox(L"ThreadAccept is closed!");
 }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值