UDP协议点对点(P2P)通讯(或者说NAT穿越)实例。
【实验环境】
一个服务端Server,两个客户端:Client1和Client2 。Server和Client1在Linux系统上运行,Client2在Windows上运行。
Server端源代码:
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
int i, n, len;
int sockfd, port, sin_size;
struct sockaddr_in addr; //服务器网络地址结构体
struct sockaddr_in remote_addr; //客户端网络地址结构体
char buf[1024]; //数据传送的缓冲区
if(argc != 3)
{
fprintf(stderr,"Usage:%s ipaddr port\a\n",argv[0]);
return -1;
}
if((port = atoi(argv[2])) < 0)
{
fprintf(stderr,"Usage:%s ipaddr port\a\n",argv[0]);
return -1;
}
bzero(&addr,sizeof(struct soc