知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

一个简单的echo程序

发表时间:2022-03-25来源:网络

前言

在上一篇《网络编程-从TCP连接的建立说起》中简单介绍了TCP连接的建立,本文暂时先抛开TCP更加详细的介绍,来看看如何实现一个简单的网络程序。

一个简单的echo程序

本文以及后续文章都将会围绕该程序进行介绍。程序大体流程如下:

首先启动服务端,客户端通过TCP的三次握手与服务端建立连接;而后,客户端发送一段字符串,服务端收到字符串后,原封不动的发回给客户端。

我们先将代码呈现,后面再进行更加详细的解释。

客户端代码client.c如下:

//client.c//来源:公众号【编程珠玑】网站:https://www.yanbinghu.com#include#include#include#include#include #include#include#define MAXLINE 128int main(int argc, char **argv){ int sockfd; //连接描述符 struct sockaddr_in servaddr;//socket结构信息 char sendMsg[MAXLINE] = {0}; char recvMsg[MAXLINE] = {0}; //检查参数数量 if (argc < 2) { printf("usage: ./client ip port"); return -1; } //初始化结构体 bzero(&servaddr, sizeof(servaddr)); //指定协议族 servaddr.sin_family = AF_INET; //第一个参数为ip地址,需要把ip地址转换为sin_addr类型 inet_pton(AF_INET, argv[1], &servaddr.sin_addr); //第二个参数为端口号 servaddr.sin_port = htons(atoi(argv[2])); sockfd = socket(AF_INET, SOCK_STREAM, 0); if(-1 == sockfd) { perror("socket error"); return -1; } //连接服务器,如果非0,则连接失败 if(0 != connect(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr))) { perror("connect failed"); return -1; } //从控制台读取消息 if(NULL !=fgets(sendMsg,MAXLINE,stdin)) { write(sockfd, sendMsg, strlen(sendMsg)); } if(0 != read(sockfd, recvMsg, MAXLINE)) { printf("recv msg:%s
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜