亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? p2pserver.cpp

?? P2P源碼
?? CPP
字號:
/* P2P 程序服務端
 * 
 * 文件名:P2PServer.c
 *
 * 日期:2004-5-21
 *
 * 作者:shootingstars(zhouhuis22@sina.com)
 *
 */
#pragma comment(lib, "ws2_32.lib")

#include "windows.h"
#include "..\proto.h"
#include "..\Exception.h"

UserList ClientList;

void InitWinSock()
{
	WSADATA wsaData;

	if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
	{
		printf("Windows sockets 2.2 startup");
		throw Exception("");
	}
	else{
		printf("Using %s (Status: %s)\n",
			wsaData.szDescription, wsaData.szSystemStatus);
		printf("with API versions %d.%d to %d.%d\n\n",
			LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion),
			LOBYTE(wsaData.wHighVersion), HIBYTE(wsaData.wHighVersion));
		
	}
}

SOCKET mksock(int type)
{
	SOCKET sock = socket(AF_INET, type, 0);
	if (sock < 0)
	{
        printf("create socket error");
		throw Exception("");
	}
	return sock;
}

stUserListNode GetUser(char *username)
{
	for(UserList::iterator UserIterator=ClientList.begin();
						UserIterator!=ClientList.end();
							++UserIterator)
	{
		if( strcmp( ((*UserIterator)->userName), username) == 0 )
			return *(*UserIterator);
	}
	throw Exception("not find this user");
}

int main(int argc, char* argv[])
{
	try{
		InitWinSock();
		
		SOCKET PrimaryUDP;
		PrimaryUDP = mksock(SOCK_DGRAM);

		sockaddr_in local;
		local.sin_family=AF_INET;
		local.sin_port= htons(SERVER_PORT); 
		local.sin_addr.s_addr = htonl(INADDR_ANY);
		int nResult=bind(PrimaryUDP,(sockaddr*)&local,sizeof(sockaddr));
		if(nResult==SOCKET_ERROR)
			throw Exception("bind error");

		sockaddr_in sender;
		stMessage recvbuf;
		memset(&recvbuf,0,sizeof(stMessage));

		// 開始主循環.
		// 主循環負責下面幾件事情:
		// 一:讀取客戶端登陸和登出消息,記錄客戶列表
		// 二:轉發客戶p2p請求
		for(;;)
		{
			int dwSender = sizeof(sender);
			int ret = recvfrom(PrimaryUDP, (char *)&recvbuf, sizeof(stMessage), 0, (sockaddr *)&sender, &dwSender);
			if(ret <= 0)
			{
				printf("recv error");
				continue;
			}
			else
			{
				int messageType = recvbuf.iMessageType;
				switch(messageType){
				case LOGIN:
					{
						//  將這個用戶的信息記錄到用戶列表中
						printf("has a user login : %s\n", recvbuf.message.loginmember.userName);
						stUserListNode *currentuser = new stUserListNode();
						strcpy(currentuser->userName, recvbuf.message.loginmember.userName);
						currentuser->ip = ntohl(sender.sin_addr.S_un.S_addr);
						currentuser->port = ntohs(sender.sin_port);
						
						ClientList.push_back(currentuser);

						// 發送已經登陸的客戶信息
						int nodecount = (int)ClientList.size();
						sendto(PrimaryUDP, (const char*)&nodecount, sizeof(int), 0, (const sockaddr*)&sender, sizeof(sender));
						for(UserList::iterator UserIterator=ClientList.begin();
								UserIterator!=ClientList.end();
								++UserIterator)
						{
							sendto(PrimaryUDP, (const char*)(*UserIterator), sizeof(stUserListNode), 0, (const sockaddr*)&sender, sizeof(sender)); 
						}

						break;
					}
				case LOGOUT:
					{
						// 將此客戶信息刪除
						printf("has a user logout : %s\n", recvbuf.message.logoutmember.userName);
						UserList::iterator removeiterator = NULL;
						for(UserList::iterator UserIterator=ClientList.begin();
							UserIterator!=ClientList.end();
							++UserIterator)
						{
							if( strcmp( ((*UserIterator)->userName), recvbuf.message.logoutmember.userName) == 0 )
							{
								removeiterator = UserIterator;
								break;
							}
						}
						if(removeiterator != NULL)
							ClientList.remove(*removeiterator);
						break;
					}
				case P2PTRANS:
					{
						// 某個客戶希望服務端向另外一個客戶發送一個打洞消息
						printf("%s wants to p2p %s\n",inet_ntoa(sender.sin_addr),recvbuf.message.translatemessage.userName);
						stUserListNode node = GetUser(recvbuf.message.translatemessage.userName);
						sockaddr_in remote;
						remote.sin_family=AF_INET;
						remote.sin_port= htons(node.port); 
						remote.sin_addr.s_addr = htonl(node.ip);

						in_addr tmp;
						tmp.S_un.S_addr = htonl(node.ip);
						printf("the address is %s,and port is %d\n",inet_ntoa(tmp), node.port);

						stP2PMessage transMessage;
						transMessage.iMessageType = P2PSOMEONEWANTTOCALLYOU;
						transMessage.iStringLen = ntohl(sender.sin_addr.S_un.S_addr);
						transMessage.Port = ntohs(sender.sin_port);
                        
						sendto(PrimaryUDP,(const char*)&transMessage, sizeof(transMessage), 0, (const sockaddr *)&remote, sizeof(remote));

						break;
					}
				
				case GETALLUSER:
					{
						int command = GETALLUSER;
						sendto(PrimaryUDP, (const char*)&command, sizeof(int), 0, (const sockaddr*)&sender, sizeof(sender));

						int nodecount = (int)ClientList.size();
						sendto(PrimaryUDP, (const char*)&nodecount, sizeof(int), 0, (const sockaddr*)&sender, sizeof(sender));

						for(UserList::iterator UserIterator=ClientList.begin();
								UserIterator!=ClientList.end();
								++UserIterator)
						{
							sendto(PrimaryUDP, (const char*)(*UserIterator), sizeof(stUserListNode), 0, (const sockaddr*)&sender, sizeof(sender)); 
						}
						break;
					}
				}
			}
		}

	}
	catch(Exception &e)
	{
		printf(e.GetMessage());
		return 1;
	}

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区久久精品爱涩 | 一区二区三区四区视频精品免费| 99久久婷婷国产精品综合| 亚洲已满18点击进入久久| 欧美精品三级在线观看| 成人白浆超碰人人人人| 精品一区二区影视| 亚洲综合成人在线视频| 中文字幕不卡三区| 日韩一区二区影院| 在线观看国产91| 国产一区二区不卡老阿姨| 国产三级一区二区| 欧美无砖专区一中文字| 91在线porny国产在线看| 国产精品资源站在线| 男人的天堂久久精品| 亚洲三级在线免费观看| 国产欧美综合色| 久久久久97国产精华液好用吗| 欧美亚洲国产一区二区三区va | 日韩av在线发布| 亚洲欧洲性图库| 亚洲国产高清不卡| 欧美日韩一区二区三区四区| 欧美三级电影精品| 欧美在线视频你懂得| 91激情五月电影| 欧美日韩激情一区二区| 欧美中文一区二区三区| 欧美午夜精品理论片a级按摩| 99精品久久久久久| 成人午夜免费视频| caoporn国产一区二区| 国产成人免费视频网站高清观看视频| 免费在线看成人av| 男男视频亚洲欧美| 麻豆精品在线播放| 日本大胆欧美人术艺术动态 | 日韩欧美国产不卡| 精品国产在天天线2019| 精品国产91亚洲一区二区三区婷婷 | 91麻豆精品国产无毒不卡在线观看| 97精品电影院| 欧美日韩亚洲另类| 日韩天堂在线观看| 欧美大白屁股肥臀xxxxxx| 4438x亚洲最大成人网| 欧美精品久久久久久久久老牛影院| 日韩一本二本av| 亚洲精品自拍动漫在线| 久久国产精品99久久久久久老狼| 成人国产精品免费观看| 欧美va亚洲va国产综合| 亚洲高清免费视频| 一本色道综合亚洲| 在线播放中文一区| 欧美高清视频一二三区 | 成人高清视频在线观看| 欧美xxx久久| 性久久久久久久| 91小视频在线观看| 国产精品久久久一本精品| 免费观看成人鲁鲁鲁鲁鲁视频| 色欧美片视频在线观看在线视频| 国产亚洲人成网站| 国产一区二区三区免费观看| 欧美一区二区三区在线电影| 亚洲成人自拍网| 91亚洲国产成人精品一区二三 | 一区二区三区 在线观看视频| 国产高清亚洲一区| 久久综合精品国产一区二区三区| 日韩激情av在线| 在线播放亚洲一区| 视频一区免费在线观看| 欧美日韩激情在线| 视频一区在线播放| 91精品国产一区二区三区蜜臀| 亚洲视频1区2区| 在线一区二区三区| 色综合激情久久| 久久久www免费人成精品| 精品一区二区三区在线视频| 欧美tickling网站挠脚心| 美女一区二区视频| 欧美午夜电影一区| 日韩精品电影在线| 91精品在线麻豆| 麻豆国产精品一区二区三区| 欧美精选在线播放| 奇米精品一区二区三区在线观看 | 亚洲电影在线播放| 欧美日韩视频在线一区二区| 亚洲一区电影777| 欧美日韩亚洲综合| 久久草av在线| 国产精品三级视频| 色偷偷88欧美精品久久久| 亚洲国产综合人成综合网站| 欧美日韩免费不卡视频一区二区三区| 午夜精品免费在线观看| 欧美tk丨vk视频| aaa欧美日韩| 日韩精品五月天| 国产蜜臀97一区二区三区| 91在线视频播放| 99久久国产综合精品色伊| 在线国产亚洲欧美| 国内精品视频一区二区三区八戒| 一区在线中文字幕| 6080日韩午夜伦伦午夜伦| 韩国精品久久久| 亚洲一区二区三区四区在线观看| 91麻豆精品久久久久蜜臀| 成人av综合在线| 日韩精品色哟哟| 国产精品成人免费在线| 欧美另类久久久品| 成人av在线网站| 日本aⅴ精品一区二区三区| 国产精品国产三级国产普通话三级 | 日韩欧美成人激情| 94色蜜桃网一区二区三区| 日韩激情一区二区| 亚洲乱码国产乱码精品精小说| 日韩一区二区三区视频在线观看| 成人性视频免费网站| 午夜精品久久久久久久久久久| 中文字幕av一区二区三区免费看 | 亚洲免费看黄网站| 国产日韩欧美在线一区| 日韩一区二区电影网| 色网站国产精品| 国产suv精品一区二区6| 青青草国产精品97视觉盛宴| 亚洲蜜臀av乱码久久精品 | 91丝袜美女网| 高清国产一区二区| 美女精品一区二区| 午夜精品影院在线观看| 一区二区日韩电影| 亚洲人成伊人成综合网小说| 国产免费成人在线视频| 精品国产乱码久久久久久免费| 欧美日韩一级片网站| 不卡的看片网站| 岛国一区二区三区| 久久精品国产久精国产| 中文无字幕一区二区三区| 欧美日精品一区视频| 91久久奴性调教| 成人禁用看黄a在线| 国产盗摄精品一区二区三区在线| 久久99久久精品欧美| 卡一卡二国产精品 | 免费观看在线综合| 蜜臀久久久99精品久久久久久| 亚洲电影在线免费观看| 久久蜜桃av一区二区天堂| 6080国产精品一区二区| 欧美巨大另类极品videosbest| 欧美在线观看视频一区二区| 欧洲视频一区二区| 欧美精品色综合| 日韩欧美的一区| wwwwxxxxx欧美| 国产精品国产三级国产有无不卡| 久久久影视传媒| 国产精品视频一区二区三区不卡| 欧美国产日本视频| 一区二区三区蜜桃网| 青青草国产成人av片免费| 国产成人在线视频网址| 99久久国产综合精品色伊| 欧美人牲a欧美精品| 久久久久国色av免费看影院| 最近日韩中文字幕| 丝袜美腿高跟呻吟高潮一区| 久久精品二区亚洲w码| 粉嫩在线一区二区三区视频| 色综合久久天天| 欧美成人性战久久| 综合精品久久久| 免播放器亚洲一区| 成人高清在线视频| 日韩欧美高清一区| 亚洲人123区| 亚洲高清免费观看| 美女在线观看视频一区二区| 极品美女销魂一区二区三区免费| 奇米精品一区二区三区四区 | 一二三区精品福利视频| 美腿丝袜一区二区三区| 捆绑调教一区二区三区| 精品一区二区在线播放| 国产老妇另类xxxxx| 丁香婷婷深情五月亚洲| 亚洲成a人片综合在线| 日韩激情一区二区|