乙個基於UDP的回顯C S 二

2021-08-10 06:16:45 字數 1772 閱讀 2298

解決問題:通過connect,使伺服器端意外崩潰,重啟,客戶端能通過read函式而得知

伺服器端**:

vi s4.c

#include 

#include

#include

#include

#include

#include

#include

#define serv_port 9877

#define maxline 4096

void server(int sockfd,struct sockaddr* servaddr,size_t len)

if (sendto(sockfd,buf,n,0,(struct sockaddr*)servaddr,servlen) != n)

}}int main()

struct sockaddr_in servaddr;

bzero(&servaddr,sizeof(servaddr));

servaddr.sin_family = af_inet;

servaddr.sin_port = htons(serv_port);

servaddr.sin_addr.s_addr = htonl(inaddr_any);

if (bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) < 0)

server(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));

return

0;}

客戶端**:

vi c5.c

#include 

#include

#include

#include

#include

#include

#include

#define maxline 4096

#define serv_port 9877

void client(file *fp,int sockfd)

if (write(sockfd,buf,n) != n)

if ((n = read(sockfd,buf,maxline)) < 0)

if (write(fd,buf,n) != n)

}}int main(int argc,char** argv)

int sockfd;

if ((sockfd = socket(af_inet,sock_dgram,0)) < 0)

struct sockaddr_in servaddr;

bzero(&servaddr,sizeof(servaddr));

servaddr.sin_family = af_inet;

servaddr.sin_port = htons(serv_port);

if (inet_pton(af_inet,argv[1],&servaddr.sin_addr) < 0)

if (connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) < 0)

client(stdout,sockfd);

return

0;}

第二次鍵入時,伺服器端程序已經終止

乙個簡單基於UDP的回顯C S 一

問題 伺服器端意外崩潰或重啟,客戶端不得而知 特點 迭代伺服器 服務端 vi s4.c include include include include include include include define serv port 9877 define maxline 4096 void ser...

用udp實現乙個回顯伺服器

1.ip 2.埠號3.udp協議4.網路位元組序記憶體中的多位元組資料相對於記憶體位址有大端和小端之分,磁碟檔案中的多位元組資料相對於檔案中的偏 移位址也有大端小端之分,網路資料流同樣有大端小端之分 c語言庫函式 網路位元組序和主機位元組序的轉換 include uint32 t htonl uin...

基於UDP的回顯伺服器預備知識(網路程式設計一站到底)

要寫出基於udp的回顯伺服器我們要先了解一些預備知識如 ip位址有兩個版本,ipv4與ipv6在這裡我們預設ipv4 ip位址是在 ip協議中 來標識 絡中不同主機的位址 對於 ipv4 來說,ip 位址是 個4位元組 32 位的整數 我們通常也使 點分 進製 的字串表 ip位址 例如 192.16...