【Echo】实验 -- 实现 C/C++下TCP, 服务器/客户端 通讯
2014-11-03 22:46
531 查看
本次实验利用TCP/IP, 语言环境为 C/C++
利用套接字Socket编程,实现Server/CLient 之间简单的通讯。
结果应为类似所示:
View Code
利用套接字Socket编程,实现Server/CLient 之间简单的通讯。
结果应为类似所示:
/* TCPClient.cpp */ #include <stdlib.h> #include <stdio.h> #include <winsock2.h> #include <string.h> #include <time.h> #include "conio.h" #define BUFLEN 20000 // 缓冲区大小 #define WSVERS MAKEWORD(2, 0) // 指明版本2.0 #pragma comment(lib,"ws2_32.lib") // 使用winsock 2.0 Llibrary /*------------------------------------------------------------------------ * main - TCP client for TIME service *------------------------------------------------------------------------ */ char buf1[BUFLEN+1]; char buf[BUFLEN+1]; /* buffer for one line of text */ void main(int argc, char *argv[]) { char *host = "127.0.0.1"; // char *host = "10.4.4.146"; /* server IP to connect */ char *service = "5050"; /* server port to connect */ struct sockaddr_in sin,fsin; /* an Internet endpoint address */ SOCKET sock,ssock; /* socket descriptor */ int cc,alen; /* recv character count */ char *pts ; time_t now; WSADATA wsadata; WSAStartup(WSVERS, &wsadata); //加载winsock library。WSVERS为请求的版本,wsadata返回系统实际支持的最高版本 sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); //创建套接字,参数:因特网协议簇(family),流套接字,TCP协议 //返回:要监听套接字的描述符或INVALID_SOCKET memset(&sin, 0, sizeof(sin)); // 从&sin开始的长度为sizeof(sin)的内存清0 sin.sin_family = AF_INET; // 因特网地址簇 sin.sin_addr.s_addr = inet_addr(host); // 服务器IP地址(32位) sin.sin_port = htons((u_short)atoi(service)); // 服务器端口号 connect(sock, (struct sockaddr *)&sin, sizeof(sin)); // 连接到服务器 // alen = sizeof(struct sockaddr); // ssock = accept(sock, (struct sockaddr *)&fsin, &alen); printf(" TCP(Client) Echo增强程序 \n\n"); flag1: cc = recv(sock, buf1, BUFLEN+1, 0); // cc为接收到的字符的个数(>0)或对方已关闭(=0)或连接出错(<0) if(cc == SOCKET_ERROR || cc==0) printf("Error: %d.\n",GetLastError()); //出错。其后必须关闭套接字sock。 else if(cc > 0) { buf1[cc] = '\0'; // ensure null-termination // if(buf[0] == '*') // { // printf("\n您接收到的数据为: * , 请传输数据 \n"); // goto flag2; // } (void) time(&now); // 取得系统时间 pts = ctime(&now); printf("您接收到的数据为:\n"); printf(" 时间: %s\n",pts); printf(" %s\n",buf1); // 显示所接收的字符串 } goto flag2; flag2: printf("\n您想传送什么?\n"); printf(" 如果想关闭连接,请输入 @ \n"); // printf("\n 如果想临时改为接收,请键入 # \n"); scanf("%s",pts); if(pts[0] == '@') goto end; // if(pts[0] == '#') // { // printf("\n请等待接收数据\n"); // sprintf(buf1,"%s",pts); // (void) send(sock, buf1, strlen(pts), 0); // goto flag1; // } sprintf(buf1,"%s",pts); (void) send(sock, buf1, strlen(pts), 0); goto flag1; end: closesocket(sock); // 关闭监听套接字 WSACleanup(); // 卸载winsock library printf("\n按回车键继续..."); getchar(); // 等待任意按键 }
View Code
相关文章推荐
- 【Echo】实验 -- 实现 C/C++下UDP, 服务器/客户端 通讯
- 【Chat】实验 -- 实现 C/C++下TCP, 服务器/客户端 "多人聊天室"
- 实现多客户端和服务器之间的通讯(TCP协议下,多进程)
- Golang实现简单tcp服务器02 -- 实现echo服务器/客户端
- winsock实现基于TCP的客户端/服务器通讯
- java 通过 socket 实现 服务器和客户端的通信 TCP
- C++ socket编程 实现服务端与客户端的通讯
- 网络编程资料总结(二)----Tcp多线程服务器和客户端的实现
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- Select I/O模型来实现一个并发处理多个客户端的TCP服务器 <转>
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- Java实现简单的Socket服务器与客户端字符串通讯(适合初学者阅读)
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- c++服务器与android客户端进行文件传输功能的实现
- VB.NET C#实现基于UDP的免服务器局域网多客户端点对点通讯
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- XMPP协议学习(3)--即时通讯工具实现原理(服务器,客户端)
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- 某实例+修改 Winsock实现基于TCP的客户端/服务器通信
- C++ 简单的 Tcp 实现[socket] 客户端与客户端通信