TCP 回射伺服器

2021-06-29 10:27:25 字數 2545 閱讀 6809

tcp reflect server & client

tcp回射伺服器。學習了《unp》的第五章前面的知識,自己把**敲出來了,加深了理解吧。

簡單地說就是,client傳送給server一條訊息(一行文字),server再將同樣地訊息傳送回client。

就像這樣:

用到的函式和api包括:

1) socket api — 建立套接字,負責建立基本的通訊。

2) void str_cli( file *fp, int socketfd ); — 讀寫相關資訊 

3) ssize_t readline( int fd, char *vptr, size_t maxlen); — 讀取一行文字資料

readline稍微解釋下

4) static ssize_t my_read( int fd, char *ptr ); —  一次乙個位元組的讀取資料

5) ssize_t readn( int fd, char *vptr, size_t n ); — 完整讀取n個位元組

以及一些常用的i/o函式(api)

看懂了原理之後,自己親自寫出來了**,感覺太棒了。:d

#include	#include	#include	#include	#include	#include	#include	#include	#include	#define		maxline 	1024

#define sa struct sockaddr

void err_sys( char *str, int num );

void str_cli( file *p, int socketfd );

size_t readline( int fd, char *buffer, size_t length );

static size_t my_read( int fd, char *ptr );

size_t writen( int fd, char *buffer, size_t length_buffer );

int main( int argc, char *argv )

void str_cli( file *fp, int socketfd )

}/*write n byte to the descriptor*/

ssize_t writen( int fd, char *buffer, size_t n )

nleft -= nwrite;

ptr += nwrite;

} return n;

}/*read a line from the descripotr*/

static int read_cnt;

static char *read_ptr;

static char read_buffer[maxline];

static size_t my_read( int fd, char *ptr )

else if( read_cnt == 0 )

return ( 0 );

read_ptr = read_buffer;

} read_cnt--;

*ptr = *read_ptr++;

return ( 1 );

}size_t readline( int fd, char *vptr, size_t maxlen )

else if( rc == 0 )

else

return ( -1 );

} *ptr = 0;

return ( n );

}void err_sys( char *str, int num )

用到的函式和api包括:

1) socket api — 建立套接字,負責建立基本的通訊。

2) ssize_t readn( int fd, char *vptr, size_t n ); — 完整讀取n個位元組

3) void str_echo( int socketfd);     ---向客戶端輸出資訊

唯一多了乙個就是考慮到多個客戶端連線請求伺服器的情況,呼叫了系統呼叫fork()

#include	#include	#include	#include	#include	#include	#include	#include	#include	#define maxline 1024

#define sa struct sockaddr

void err_sys( char *str, int num );

void str_echo( int socketfd );

int main( int argc, char *argv )

close( connefd );

} return 0;

}void str_echo( int socketfd )

void err_sys( char *str, int num )

TCP 回射伺服器

本例為多程序的 tcp 回射程式 服務端 include intmain int argc,char ar close connfd 父程序斷開連線 void str echo int sockfd 套接字 sockaddr in cliaddr,servaddr 網際套接字位址結構,包含協議族 i...

Linux C 回射伺服器

回射伺服器就是服務端將客戶端的資料傳送回去。我實現的回射伺服器返回增加了時間。服務端 可以很容易看懂 cpp view plain copy include include include include include include include include include define ...

使用執行緒的TCP回射伺服器程式

使用執行緒緣由 1 fork 代價昂貴 2 fork 返回之後父子程序資訊傳遞需要通過ipc機制 同一程序內的執行緒除共享全域性變數外還共享 a 程序指令 b 大多數資料 c 開啟的檔案描述符 d 訊號處理函式和處理 e 當前工作目錄 f 使用者id和組id 不過每個執行緒有各自的 a 執行緒id ...