
以下是源码
主要是红字部分
Server
#include<winsock2.h>
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib")
DWORD WINAPI TheadProc(LPVOID lp)
{
SOCKET *s2=(SOCKET*)lp;
char buffer[100];
while(1)
{
gets(buffer);
send((*s2),buffer,100,0);
memset(buffer,100,0);
}
return 0;
}
int main()
{
WSADATA wsadata;
WSAStartup(MAKEWORD(2,2),&wsadata);
SOCKET s1;
s1=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(1234);
addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
bind(s1,(SOCKADDR*)&addr,sizeof(SOCKADDR));
listen(s1,5);
printf("服务器开启\n正在等待连接......\n");
int len=sizeof(SOCKADDR);
char buffer[100];
SOCKET s2=accept(s1,NULL,&len);
CreateThread(NULL,0,TheadProc,(LPVOID)&s2,0,NULL);
while( int k=recv(s2,buffer,sizeof(buffer),0)>0)
{
printf("客户端:%s %d字节\n",buffer,k);
memset(buffer,100,0);
}
closesocket(s2);
closesocket(s1);
WSACleanup();
return 0;
}
Client
#include<winsock2.h>
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib")
DWORD WINAPI TheadProc(LPVOID lp)
{
SOCKET *s2=(SOCKET*)lp;
char buffer[100];
while(recv((*s2),buffer,100,0)>0)
{
printf("服务器:%s\n",buffer);
memset(buffer,100,0);
}
closesocket(*s2);
return 0;
}
int main()
{
WSADATA wsadata;
WSAStartup(MAKEWORD(2,2),&wsadata);
SOCKET s1;
s1=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(1234);
addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
connect(s1,(SOCKADDR*)&addr,sizeof(SOCKADDR));
printf("客户端开启\n连接成功......\n");
int len=sizeof(SOCKADDR);
char buffer[100];
CreateThread(NULL,0,TheadProc,(LPVOID)&s1,0,NULL);
while(1)
{
gets(buffer);
send(s1,buffer,sizeof(buffer),0);
}
//memset(buffer,100,0);
closesocket(s1);
WSACleanup();
return 0;
}