#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...