vc++ 多线程编程 SOCKET通信

来源:百度知道 编辑:UC知道 时间:2024/05/31 17:45:41
#include "StdAfx.h"
#include <stdio.h>
//服务器端程序
DWORD WINAPI AnswerThread(LPVOID lparam)
{
SOCKET ClientSocket=(SOCKET)(LPVOID)lparam;
char szText[]="您好!\r\n";
int send_num=::send(ClientSocket,szText,strlen(szText),0);
::closesocket(ClientSocket);
return 0;

}

int main()
{
WSADATA wsaData;
int iRet=WSAStartup(MAKEWORD(1,1),&wsaData);
SOCKET m_socket;
m_socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(m_socket==INVALID_SOCKET)
{
WSACleanup();
return 0;
}
sockaddr_in service;
service.sin_family=AF_INET;
service.sin_addr.s_addr=inet_addr("172.16.3.250");
service.sin_por

你给客户端发送数据是用send么
如果没Sleep的话,你创建了一个新线程,创建新线程的同时,当前线程也在运行,socket都被你关掉了,还怎么send??
线程跟函数是不同的,函数是等调用结束后才执行下一个语句

int send_num=::send(ClientSocket,szText,strlen(szText),0); 应该要修改为:
int send_num=::send(ClientSocket,szText,strlen(szText)+1,0);
不过,这与你的问题无关。