这是服务器程序 用win32写的
#include <iostream>
#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib,"Ws2_32.lib")
char center[1000];
struct datapp
{
}*datap;
DWORD WINAPI newpor(
LPVOID datap
);
int main()
{
HANDLE threadd=CreateThread(NULL,0,newpor,datap,0,NULL);
WORD a;
WSAData b;
int c;
a=MAKEWORd(1,1);
c=WSAStartup(a,&b);
if (c!=0)
{
return 0;
}
if (HIBYTE(b.wVersion!=1)&&LOBYTE(b.wVersion!=1))
{
WSACleanup();
return 0;
}
SOCKET SW_123;
SW_123=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN WS_321;
WS_321.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
WS_321.sin_family=AF_INET;
WS_321.sin_port=htons(6000);
bind(SW_123,(SOCKADDR*)&WS_321,sizeof(SOCKADDR));
char recvv[100]={""};
char sendd[100];
SOCKADDR_IN Veter;
SOCKADDR_IN Veter1;
SOCKADDR_IN Veter2;
int Are=sizeof(Veter);
Veter1.sin_addr.S_un.S_addr=inet_addr("172.26.1.2");
Veter1.sin_family=AF_INET;
Veter1.sin_port=htons(6000);
Veter2.sin_addr.S_un.S_addr=inet_addr("172.26.1.3");
Veter2.sin_family=AF_INET;
Veter2.sin_port=htons(6000);
while (1)
{
recvfrom(SW_123,recvv,strlen(recvv),0,(SOCKADDR*)&Veter,&Are);
if (Veter.sin_addr.S_un.S_addr==Veter1.sin_addr.S_un.S_addr)
{
sprintf_s(sendd,"%s",recvv);
sendto(SW_123,sendd,strlen(sendd),0,(SOCKADDR*)&Veter2,sizeof(SOCKADDR));
}
if (Veter.sin_addr.S_un.S_addr==Veter2.sin_addr.S_un.S_addr)
{
sprintf_s(sendd,"%s",recvv);
sendto(SW_123,sendd,strlen(sendd),0,(SOCKADDR*)&Veter1,sizeof(SOCKADDR));
}
}
return 0;
}
DWORD WINAPI newpor(
LPVOID datap
)
{
return 0;
}
说明:只是两个客户端通过这个服务器相互交换数据
两个客户端的IP地址是固定不变的