UNIX TCP回射伺服器/用戶端(1):用於測試的用戶端

來源:互聯網
上載者:User

    《Unix網路編程》這本書附帶了許多短小精美的小程式,我在閱讀此書的時候,將書上的代碼按照自己的理解重寫了一遍(大部分是抄書上的),加深一下自己的理解(純看書太困了,呵呵)。此例子在Ubuntu10.04上測試通過。

    PS:程式裡使用了包裹函數(首字母是大寫的函數)和常量(所有字母都是大寫的常量)的聲明在my_unp.h檔案中,定義在unp_base.c和unp_thread.c中,地址:http://blog.csdn.net/aaa20090987/article/details/8096701

    程式簡介:這個一個專門用於測試TCP伺服器的用戶端。它的原理很簡單,利用TCP協議,先和指定的伺服器建立串連,然後從終端讀取一段字串,並發送給伺服器,最後讀取伺服器的返回,並顯示在終端上。

上代碼:

#include "my_unp.h"  void str_cli(FILE *fp, int sockfd)  {  char sendline[MAXLINE], recvline[MAXLINE];  int len;//從終端擷取一行字串,將其寫入通訊端  //然後從通訊端一行字串,將其寫入終端  while( Fgets(sendline, MAXLINE, fp) != NULL )  {  Writen(sockfd, sendline, strlen(sendline));  len = Read(sockfd, recvline, MAXLINE);if( len == 0 )  error_quit("str_cli: server terminated prematurely");  recvline[len] = 0;Fputs(recvline, stdout);  }  }  int main(int argc, char **argv)  {  int sockfd;  struct sockaddr_in servaddr;  if( argc != 2 )  error_quit("usage: client <IPAddress>");  //建立用於TCP協議的通訊端   sockfd = Socket(AF_INET, SOCK_STREAM, 0);  memset(&servaddr, 0, sizeof(servaddr));  servaddr.sin_family = AF_INET;  servaddr.sin_port = htons(SERV_PORT);  //將程式的參數1(argv[1])轉換成通訊端地址結構  Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);  ////向伺服器發起串連,串連成功後client_socket代表了客戶機和伺服器的一個socket串連   Connect(sockfd, (SA*)&servaddr, sizeof(servaddr));  str_cli(stdin, sockfd);  return 0;  } 

運行樣本(紅色字型的為輸入)(假設某個回射字串的伺服器已經啟動)

qch@ubuntu:~/code$ gcc my_unp_v1.c client.c -o client
qch@ubuntu:~/code$ ./client 127.0.0.1
ABCD
ABCD
Ctrl+D

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.