18,356
社区成员
发帖
与我相关
我的任务
分享
int main(int argc, char* argv[])
{
// 这里监听的SOCKET
SOCKET listenServer;
SOCKADDR_IN listenAddr,clientAddr;
int err,errcode;
WSADATA wsData;
WSAStartup(MAKEWORD(2,2), &wsData);
listenServer = socket(AF_INET, SOCK_STREAM, 0);
listenAddr.sin_family = AF_INET;
listenAddr.sin_port = htons(8056);
listenAddr.sin_addr.S_un.S_addr = INADDR_ANY;
bind(listenServer,(SOCKADDR*)&listenAddr, sizeof(SOCKADDR_IN));
err = listen(listenServer,5);
if(SOCKET_ERROR == err) {
//cout<<WSAGetLastError()<<endl;
}
cout << "服务器已经启动,等待客户端连接..." <<endl;
char buff[MAX_PATH];
while(TRUE)
{
int len = sizeof(clientAddr);
SOCKET client = accept(listenServer,(SOCKADDR*)&clientAddr,&len);
// buff = "发送内容";
recv(client,buff,strlen(buff),0);
cout<<"从"<<inet_ntoa(clientAddr.sin_addr)<<"来的消息:"<<buff << endl;
}
closesocket(listenServer);
WSACleanup();
return 0;
}
int main(int argc, char* argv[])
{
int err,errcode;
SOCKADDR_IN listenAddr;
WSADATA wsData;
WSAStartup(MAKEWORD(2,2), &wsData);
SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, 0);
listenAddr.sin_family = AF_INET;
listenAddr.sin_port = htons(8056);
listenAddr.sin_addr.S_un.S_addr = inet_addr("192.168.0.128");
err = connect(clientSocket,(SOCKADDR*)&listenAddr,sizeof(SOCKADDR));
if(err == SOCKET_ERROR) {
cout << WSAGetLastError()<<endl;
}
//while(TRUE)
//{
char buff[MAX_PATH];
sprintf(buff,"这里内容");
send(clientSocket,buff,strlen(buff)+1,0);
//}
closesocket(clientSocket);
WSACleanup();
return 0;
}
/**
在头文件中的一个struct
struct uSOCKETPARAM{
SOCKET s;
SOCKADDR_IN addr;
};
*/
uSOCKETPARAM *usp = new uSOCKETPARAM;
while(TRUE)
{
int len = sizeof(clientAddr);
SOCKET client = accept(listenServer,(SOCKADDR*)&clientAddr,&len);
// buff = "发送内容";
usp->s = client;
usp->addr = clientAddr;
CloseHandle(
CreateThread(NULL,0,threadFunc,(LPVOID)usp,0,0)
);
/* recv(client,buff,strlen(buff),0);
cout<<"从"<<inet_ntoa(clientAddr.sin_addr)<<"来的消息:"<<buff << endl;*/
}
// 线程函数
DWORD WINAPI threadFunc(LPVOID p)
{
uSOCKETPARAM *usp = (uSOCKETPARAM*)p;
char buff[MAX_PATH];
while(1){
recv(usp->s,buff,strlen(buff),0);
cout<<"从"<<inet_ntoa(usp->addr.sin_addr)<<"来的消息:"<<buff << endl;
}
return 0;
}
客户端的代码。
while(TRUE)
{
char buff[MAX_PATH];
sprintf(buff,"这里内容");
send(clientSocket,buff,strlen(buff)+1,0);
}