slation,详见http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt,当然,此问题可以通过双方先尝试连接对方的内网IP来解决,但是这个代码只是为了验证原理,并没有处理这些问题),后登录的计算机可以获得先登录计算机的用户名,后登录的计算机通过send username message的格式来发送消息。如果发送成功,说明你已取得了直接与对方连接的成功。
程序现在支持三个命令:send , getu , exit
send格式:send username message
功能:发送信息给username
getu格式:getu
功能:获得当前服务器用户列表
exit格式:exit
功能:注销与服务器的连接(服务器不会自动监测客户是否吊线)
代码很短,相信很容易懂,如果有什么问题,可以给我发邮件zhouhuis22@sina.com 或者在CSDN上发送短消息。同时,欢迎转发此文,但希望保留作者版权8-)。
最后感谢CSDN网友 PiggyXP 和 Seilfer的测试帮助
P2PServer.c
/* 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)
{
&nb
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>