【Echo】实验 -- 实现 C/C++下UDP, 服务器/客户端 通讯
2014-11-03 22:52
666 查看
本次实验利用UDP协议, 语言环境为 C/C++
利用套接字Socket编程,实现Server/CLient 之间简单的通讯。
结果应为类似所示:
View Code
利用套接字Socket编程,实现Server/CLient 之间简单的通讯。
结果应为类似所示:
/* UDPClient.cpp */ #include <stdlib.h> #include <stdio.h> #include <winsock2.h> #include <string.h> #include <time.h> #define BUFLEN 2000 // 缓冲区大小 #define WSVERS MAKEWORD(2, 2) // 指明版本2.2 #pragma comment(lib,"ws2_32.lib") // 加载winsock 2.2 Llibrary void main(int argc, char *argv[]) { char *host = "127.0.0.1"; /* server IP to connect */ char *service = "5050"; /* server port to connect */ struct sockaddr_in toAddr; /* an Internet endpoint address */ char buf[BUFLEN+1]; /* buffer for one line of text */ SOCKET sock; /* socket descriptor */ int cc; /* recv character count */ char *pts; /* pointer to time string */ time_t now; /* current time */ int toAddrsize = sizeof(toAddr); WSADATA wsadata; WSAStartup(WSVERS, &wsadata); /* 启动某版本Socket的DLL */ sock = socket(PF_INET, SOCK_DGRAM,IPPROTO_UDP); memset(&toAddr, 0, sizeof(toAddr)); toAddr.sin_family = AF_INET; toAddr.sin_port = htons((u_short)atoi(service)); //atoi:把ascii转化为int. htons:主机序(host)转化为网络序(network), s--short toAddr.sin_addr.s_addr = inet_addr(host); //如果host为域名,需要先用函数gethostbyname把域名转化为IP地址 // memset(buf,' ',1000); //fill 1000 bytes with 'e' buf[1000] = '\0'; (void) time(&now); // 取得系统时间 pts = ctime(&now); // 把时间转换为字符串 // memcpy(buf,pts,strlen(pts)); sprintf(buf,"%s ",pts); printf(" UDP(Client) Echo增强程序\n\n"); printf(" 时间 :%s",buf); cc = sendto(sock, buf, 1000, 0,(SOCKADDR *)&toAddr, sizeof(toAddr)); flag2: if (cc == SOCKET_ERROR){ printf("发送失败,错误号:%d\n", WSAGetLastError()); } else{ printf(" 发送成功 \n"); cc = recvfrom(sock, buf, BUFLEN, 0, (SOCKADDR *)&toAddr, & toAddrsize); printf(" 您接收到的数据为:\n %s \n",buf); printf("键入 # 继续发送,键入 @ 停止发送\n"); scanf("%s",pts); if(pts[0]=='#') { printf(" 请输入要发送的数据 :\n"); goto flag1; } if(pts[0]=='@') goto end; } flag1: scanf("%s",pts); sprintf(buf,"%s ",pts); cc = sendto(sock, buf, 1000, 0,(SOCKADDR *)&toAddr, sizeof(toAddr)); goto flag2; getchar(); closesocket(sock); end: GlobalFree(buf); WSACleanup(); /* 卸载某版本的DLL */ getchar(); }
View Code
相关文章推荐
- 【Echo】实验 -- 实现 C/C++下TCP, 服务器/客户端 通讯
- VB.NET C#实现基于UDP的免服务器局域网多客户端点对点通讯
- 【Chat】实验 -- 实现 C/C++下TCP, 服务器/客户端 "多人聊天室"
- C++ socket编程 实现服务端与客户端的通讯
- Java实现简单的Socket服务器与客户端字符串通讯(适合初学者阅读)
- Linux网络编程--多线程实现echo服务器与客户端“一对多”功能,网络编程的“Hello World!” - 壮壮熊
- TwinCAT 3中基于UDP协议通讯的C++实现
- c++服务器与android客户端进行文件传输功能的实现
- C++ 利用socket实现TCP,UDP网络通讯
- C++实现基于IO复用模型的echo服务器
- 使用socket实现服务器客户端即时通讯的小例子
- Java实现简单的Socket服务器与客户端字符串通讯(适合初学者阅读)
- C#基于TCP&UDP实现服务器与多个客户端之间的通信(客户端之间直接通信,不靠服务器端转发消息)
- python服务器和客户端网络通讯UDP
- 实现UDP协议,socket编程,调用到windowsAPI,实现客户端和服务器
- UDP通讯:服务器与客户端
- winsock实现基于TCP的客户端/服务器通讯
- Linux网络编程--多线程实现echo服务器与客户端“一对多”功能,是网络编程的“Hello World!”
- Java实现单个客户端与服务器UDP通信
- socket实现简单的echo应答服务器和客户端