網路程式設計(二)

2021-08-28 09:54:06 字數 2139 閱讀 6988

#include#include#include#include#include#include#include#include#include#include#define err_exit(m) \

do while (0)

void handler(int sig)

void do_service(int conn)

else if ( ret == -1)

fputs(recvbuf, stdout);

write(conn, recvbuf, ret); }}

int main(void)

//將套接字和位址進行繫結

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

err_exit("bind error");

//監聽狀態

if (listen(listenfd, somaxconn) < 0) //listen應在socket和bind之後,而在accept之前

err_exit("listen error");

struct sockaddr_in peeraddr; //傳出引數

socklen_t peerlen = sizeof(peeraddr); //傳入傳出引數,必須有初始值

int conn; // 已連線套接字(變為主動套接字,即可以主動connect)

//父子程序公用所有的檔案描述符

while(1)

if(pid ==0) //子程序

;while(fgets(sendbuf, sizeof(sendbuf),stdin) != null)

printf("child close\n");

exit(exit_success);

//do_service(conn);

//退出程序

//exit(exit_success);

}else //父程序

else if (ret == 0)

fputs(recvbuf,stdout);

}printf("parent close\n");

kill(pid,sigusr1);

exit(exit_success);

}}

close(conn); //關閉的問題

close(listenfd);

return 0;}/*

訊號處理函式

void handler(int sig)

kill(pid,9)

*/

#include#include#include#include#include#include#include#include#include#include#define err_exit(m) \

do while (0)

void handler(int sig)

int main(void)

if (pid == 0) //子程序

; while (1)

else if (0 == ret)

fputs(recvbuf, stdout);

memset(recvbuf, 0, sizeof(recvbuf));

} kill(pid,sigusr1);

printf("child close\n");

} else //父程序

; while (fgets(sendbuf, sizeof(sendbuf), stdin) != null)

printf("father close\n");

} close(sock); //會出乙個資料

return 0;

}

makefile 

.phony:clean all

cc=gcc

cflags=-wall -g

bin=client serve

all:$(bin)

%.o:%.c

$(cc) $(cflags) -c $< -o $@

clean:

rm -f *.o $(bin)

網路程式設計(二)

網路程式設計基礎 二 struct in addr 這個結構體中儲存的是網路二進位制的ip位址 include struct hostent gethostbyname const char name name 網域名稱 返回值 struct hostent define h addr h addr...

網路程式設計(二)

一 流式服務和資料報服務 1 位元組流服務 傳送端send 只是將資料寫到tcp傳送緩衝區中,然後將傳送緩衝區中的資料打包成報文段傳送出去。接收端又將接收到的報文段寫到緩衝區中,最後recv 直接取資料。位元組流服務特點 資料沒有明確分割 由底層做分割 不分一定的報文段,什麼時候想發便可將寫入緩衝區...

網路程式設計(二)

在之前的部落格中,介紹了傳輸層的一種重要協議 tcp協議。今天來介紹另外一種傳輸層協議 udp 一 udp udp 無連線的 不可靠的 資料報服務。首先看一下udp報頭 從上圖可以看出,udp協議報頭比tcp協議報頭簡單很多,沒有tcp報頭裡面那麼多的保證機制,所以udp較比tcp簡單。不可靠 ud...