永发信息网

网络编程服务器程序实现两个客户端数据交换

答案:1  悬赏:80  手机版
解决时间 2021-04-26 23:59
  • 提问者网友:孤山下
  • 2021-04-26 06:14

这是服务器程序 用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地址是固定不变的

最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-04-26 07:50
你好。
很幸运看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。
希望我的回答也能够帮到你!
祝你好运~!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯