Linux下網絡編程(1)創建客戶端服務器

      網友投稿 984 2025-04-03

      虛擬機: 虛擬計算機環境、。


      linux系統編程需要掌握的知識:

      1. ?操作系統環境搭建(虛擬機+linux操作系統)

      2. ?常用的指令(文件目錄管理、網絡管理、磁盤管理)

      3. ?文件(fopen系列、open系列)和目錄操作

      4. ?Shell腳本編程

      5. ?進程和線程編程(并發): 多路IO操作: poll機制、select機制、epoll機制

      6. ?網絡編程

      7. ?常見的設備操作: 攝像頭控制

      學習Linux系統編程: Linux應用和驅動開發、Linux運維開發。

      任務1:?Linux下網絡編程

      1.1 協議概念介紹

      網絡傳輸分協議,底層常見協議: TCP、UDP協議。

      網絡數據如何傳輸?

      協議詞匯

      IIC、SPI、CAN、485、8080、USART(串口)、TCP/IP協議…….

      TCP/IP協議: 傳輸數據是分包進行發送。(數據包: 封包、解包)

      問題: 有一個路由器可以上網(外網只有一根網線),路由器可以擴展網絡(4根網線),4根網絡同時接了4臺電腦。

      每臺電腦在進行網絡應用操作(QQ聊天、瀏覽器文件下載、玩游戲……)

      端口號: 表示每一臺電腦上的具體的一個應用程序。

      IP地址: 表示每一個電腦的地址(唯一地址)。

      訪問一臺電腦具體應用的地址表示方法: :<端口號> 192.168.1.123:8080

      1.2 IP地址介紹

      局域網IP地址: 常見都是192開頭: 192.xx.xx.xx

      廣域網IP地址(公網IP): xx.xx.xx.xx 比如: 登錄QQ。

      1.3 TCP協議和UDP協議區別:

      TCP協議: 點對點協議。 比如: 打電話 (3次握手過程)。

      (HTTP協議、FTP協議……)

      UDP協議: 廣播協議。 比如: 廣播電臺。實時效率比較高。(數據不可靠)

      TCP協議模型: (C/S模型) (客戶端+服務器模型)

      TCP協議通信:是針對服務器和客戶端之間。

      注意: 客戶端和客戶端不能直接通信、服務器和服務器直接不能直接通信。

      電腦上的QQ軟件: QQ客戶端,服務器就在騰訊公司。

      1.4 學習Linux系統基本網絡操作指令

      指令1: ifconfig <參數>

      用法: ifconfig 查看已經啟動的網卡信息(IP地址)。

      1. ?手動設置網卡IP地址: #ifconfig eth0 192.168.1.100

      2.開啟網卡: # ifup eth0

      3. 關閉網卡: # ifdown eth0

      4. 查看全部網卡: # ifconfig -a (包括關閉未啟動的網卡)

      5. 關閉防火墻的圖形設置頁面: # setup

      1.5 網卡自動分配IP地址的操作

      測試網絡是否暢通:

      1.6 常用的TCP協議調試軟件使用

      任務2: TCP協議網絡編程

      在Linux系統下所有的設備操作都可以看成文件操作。

      網絡上傳輸的數據與本地計算機的數據傳輸存儲的方式不一樣: 小端和大端

      TCP協議服務器搭建過程

      1. ?創建套接字: socket

      2. ?綁定端口號: bind (創建服務器)

      3. ?設置監聽的數量,最大可以連接的客戶端數量。

      4. ?阻塞方式等待客戶端連接

      5. ?實現數據通信。 (客戶端連接成功之后)

      TCP協議客戶端搭建過程

      1. ?創建套接字

      2. ?連接指定的服務器

      3. ?實現數據通信(成功的連接服務器)

      ? ?將16位數量從主機字節順序轉換為網絡字節順序。

      Linux下網絡編程(1)創建客戶端服務器

      # define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8))

      作業

      1. ?重新編寫代碼,實現客戶端與服務器之間基本通信。

      #include #include #include #include #include /* TCP客戶端創建 */ int main(int argc,char **argv) { int tcp_client_fd; //客戶端套接字描述符 int Server_Port; //服務器端口號 struct sockaddr_in tcp_server; //存放服務器的IP地址信息 char rx_buff[1024]; int rx_len; if(argc!=3) { printf("TCP客戶端形參格式:./tcp_client <服務器IP地址> <服務器端口號>\n"); return -1; } Server_Port=atoi(argv[2]); //將字符串的端口號轉為整型 /*1. 創建網絡套接字*/ tcp_client_fd=socket(AF_INET,SOCK_STREAM,0); if(tcp_client_fd<0) { printf("TCP服務器端套接字創建失敗!\n"); return -1; } /*2. 連接到指定的服務器*/ tcp_server.sin_family=AF_INET; //IPV4協議類型 tcp_server.sin_port=htons(Server_Port);//端口號賦值,將本地字節序轉為網絡字節序 tcp_server.sin_addr.s_addr=inet_addr(argv[1]); //IP地址賦值 if(connect(tcp_client_fd,(const struct sockaddr*)&tcp_server,sizeof(const struct sockaddr))<0) { printf("TCP客戶端: 連接服務器失敗!\n"); return -1; } /*3. 數據通信*/ rx_len=read(tcp_client_fd,rx_buff,1024); printf("客戶端接收的數據:%d,%s\n",rx_len,rx_buff); /*4. 關閉連接*/ close(tcp_client_fd); }

      (2)創建服務器

      #include #include #include #include #include /* TCP服務器創建 */ int main(int argc,char **argv) { int tcp_server_fd; //服務器套接字描述符 int tcp_client_fd; //客戶端套接字描述符 struct sockaddr_in tcp_server; struct sockaddr_in tcp_client; socklen_t tcp_client_addrlen=0; int tcp_server_port; //服務器的端口號 //判斷傳入的參數是否合理 if(argc!=2) { printf("參數格式:./tcp_server <端口號>\n"); return -1; } tcp_server_port=atoi(argv[1]); //將字符串轉為整數 /*1. 創建網絡套接字*/ tcp_server_fd=socket(AF_INET,SOCK_STREAM,0); if(tcp_server_fd<0) { printf("TCP服務器端套接字創建失敗!\n"); return -1; } /*2. 綁定端口號,創建服務器*/ tcp_server.sin_family=AF_INET; //IPV4協議類型 tcp_server.sin_port=htons(tcp_server_port);//端口號賦值,將本地字節序轉為網絡字節序 tcp_server.sin_addr.s_addr=INADDR_ANY; //將本地IP地址賦值給結構體成員 if(bind(tcp_server_fd,(const struct sockaddr*)&tcp_server,sizeof(struct sockaddr))<0) { printf("TCP服務器端口綁定失敗!\n"); return -1; } /*3. 設置監聽的客戶端數量*/ listen(tcp_server_fd,10); /*4. 等待客戶端連接*/ tcp_client_addrlen=sizeof(struct sockaddr); tcp_client_fd=accept(tcp_server_fd,(struct sockaddr *)&tcp_client,&tcp_client_addrlen); if(tcp_client_fd<0) { printf("TCP服務器:等待客戶端連接失敗!\n"); return -1; } //打印連接的客戶端地址信息 printf("已經連接的客戶端信息: %s:%d\n",inet_ntoa(tcp_client.sin_addr),ntohs(tcp_client.sin_port)); /*5. 數據通信*/ write(tcp_client_fd,"123456789",10); //將數據發送給客戶端 /*6. 關閉連接*/ close(tcp_client_fd); }

      2. ?實現文件傳輸:

      比如: 服務器給客戶端發送文件 (下載)

      客戶端給服務器發送文件 (上傳)

      (1) ?在本地計算機上測試

      (2) ?與局域網內其他計算機之間進行測試。 考慮網絡、丟包問題。

      擴展作業:

      1. ?實現目錄傳輸(只寫一級目錄)。

      2. ?實現目錄內文件的同步 (公交車站臺、地鐵里廣告機(視頻播放機))

      安裝編譯器

      解壓命令: # tar xvf sublime_text_3_build_3143_x32.tar.bz2

      在任意目錄下想要運行這個編輯軟件,需要添加環境變量。

      1. ?# vim /etc/profile 打開配置文件 (翻到最后一行)

      進入插入模式下,寫上以下代碼,再保存退出:

      export PATH=/work/test/sublime_text_3:$PATH

      2. ?立即生效環境變量的命令(只是當前運行的終端有效)

      # source /etc/profile

      3. ?永久生效。重啟系統 或者 注銷用戶重新登錄

      第二個軟件安裝: # rpm -ivh UltraEdit-16.1-0.22.i386.rpm

      使用軟件: # uex 123.c

      注冊方法:

      方法1(不改變軟件配置):

      UltraEdit for linux 30天無限試用的方法:

      1. 查找uex.conf文件,該文件是UltraEdit的配置文件

      示例:[root@wbyq sd_fuse]# find / -name uex.conf

      查找出的結果:/root/.idm/uex/uex.conf

      2. 刪除uex.conf文件

      示例:[root@wbyq sd_fuse]# rm /root/.idm/uex/uex.conf

      3. 刪除記錄時間的文件

      [root@wbyq ~]# rm /tmp/*.spl -rfdv

      4. 重新運行uex命令即可使用

      方法2(改變軟件配置,全部重新初始化):

      UltraEdit for linux 30天無限試用的方法:

      1. 查找uex.conf文件,該文件是UltraEdit的配置文件

      示例:[root@wbyq sd_fuse]# find / -name uex.conf

      查找出的結果:/root/.idm/uex/uex.conf

      2. 刪除/root/.idm目錄

      示例:[root@wbyq sd_fuse]# rm /root/.idm -rf

      3. 刪除記錄時間的文件

      [root@wbyq ~]# rm /tmp -rf

      4. 重新運行uex命令即可使用30天

      方法3:

      UltraEdit for linux 30天無限試用的方法:(快速精簡,不改變之前的軟件配置)

      rm -rfd ~/.idm/uex

      rm -rf ~/.idm/*.spl

      rm -rf /tmp/*.spl

      軟件-:

      http://www.ultraedit.com/downloads/uex.html

      Linux 網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:word如何進行求和(word如何求和)
      下一篇:如何在word文檔中加背景音樂(怎么在word文檔里加音樂)
      相關文章
      亚洲激情中文字幕| 久久亚洲精品无码观看不卡| 亚洲国产精品一区二区第一页| 亚洲精品高清在线| 亚洲AV无码乱码精品国产| 亚洲av成人一区二区三区观看在线 | 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲一区在线观看视频| 久久精品国产亚洲| 亚洲成在人天堂一区二区| 国产亚洲大尺度无码无码专线| 亚洲一区二区三区无码影院| 亚洲日韩中文在线精品第一| 亚洲成a人无码av波多野按摩| 亚洲国产婷婷香蕉久久久久久| 亚洲第一区精品日韩在线播放| 国产精品亚洲片在线花蝴蝶| 国产在亚洲线视频观看| 亚洲国产V高清在线观看| 亚洲午夜福利精品无码| 亚洲日韩在线观看免费视频| 亚洲综合无码AV一区二区| 国产偷v国产偷v亚洲高清| 亚洲Aⅴ无码专区在线观看q| 亚洲图片在线观看| 亚洲大尺码专区影院| 亚洲高清中文字幕免费| 亚洲精华液一二三产区| 四虎精品亚洲一区二区三区| 亚洲综合区小说区激情区| 亚洲人成网77777亚洲色| 亚洲免费视频网站| 亚洲中字慕日产2021| 亚洲色www永久网站| 国产精品亚洲综合| 亚洲精品无码高潮喷水在线| 亚洲三级电影网址| jlzzjlzz亚洲jzjzjz| 亚洲AV第一成肉网| 亚洲午夜久久久久妓女影院 | 亚洲国产av玩弄放荡人妇|