发表时间: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
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14