1. 程式人生 > 其它 >程式設計一個最簡單遊戲_網路程式設計-一個簡單的echo程式

程式設計一個最簡單遊戲_網路程式設計-一個簡單的echo程式

技術標籤:程式設計一個最簡單遊戲程式設計一個最簡單遊戲程式碼

前言

在上一篇《網路程式設計-從TCP連線的建立說起》中簡單介紹了TCP連線的建立,本文暫時先拋開TCP更加詳細的介紹,來看看如何實現一個簡單的網路程式。

一個簡單的echo程式

本文以及後續文章都將會圍繞該程式進行介紹。程式大體流程如下:

58115a42356c3e562a83484a9baaa21d.png

首先啟動服務端,客戶端通過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