傳統的網路程式設計(分三步一步一步的寫)

2021-08-25 08:13:51 字數 1947 閱讀 4993

server

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#define max_read_msg_len 4096

#define max_write_msg_len 4096

const

short g_nconnectport = 15623;

const

char* g_szusermsg="hi,i'm server!";

typedef

struct sockaddr sa;

typedef

struct sockaddr_in sa4;

void do_work(int fd)

int main()

//初始化ipv4位址

addr.sin_family = af_inet;

//初始化需要將埠號將主機位元組序轉換為網路位元組序

addr.sin_port = htons(g_nconnectport);

addr.sin_addr.s_addr = htonl(inaddr_any);

//將s_fd和addr位址空間繫結

int b = bind(s_fd, (sa*)&addr, sizeof(addr));

if(b == -1)

//將s_fd設定為被動監聽

listen(s_fd, 5);//5是最多可以存放5個鏈結

//從未決鏈結佇列裡取出乙個鏈結

while(1)

//printf("%s\n",inet_ntop(af_inet,&cli.sin_addr,ip,128));

//建立子程序

pid = fork();

if(pid == -1)

if(pid == 0)

//關閉本次鏈結,結束本次通訊

close(c_fd);

exit(0);

}else

}close(s_fd);

return

0;}

client
#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

typedef

struct sockaddr sa;

typedef

struct sockaddr_in sa4;

int main(int argc, char *argv)

//初始化伺服器的ip位址和埠號

serv.sin_family = af_inet;

serv.sin_port = htons(15623);

//ip位址127.0.0.1,這裡的ip從終端輸入

inet_pton(af_inet,argv[1],&serv.sin_addr);

int c = connect(s_fd, (sa*) &serv, sizeof(serv));

if(c == -1)

//向伺服器傳送訊息

write(s_fd,msg,strlen(msg));

//阻塞等待伺服器的響應訊息

r = read(s_fd, buf, 128);

//處理響應訊息

write(1, buf, r);

//告知伺服器結束本次通話

close(s_fd);

return

0;}

一步一步 Sql Azure

一步一步 sql azure 1.使用 windowsazure 平台賬號登陸 2.新建sqlazure server 3.新建資料庫 4.為sql azure server 新增防火牆規則,只有將本機新增到規則裡才能從本機連線到該sqlazure server 5.連線到sql azure ser...

Linux網路程式設計一步一步學 select詳解

select系統呼叫是用來讓我們的程式監視多個檔案控制代碼 file descriptor 的狀態變化的。程式會停在select這裡等待,直到被監視的檔案控制代碼有某乙個或多個發生了狀態改變。檔案在控制代碼在linux裡很多,如果你man某個函式,在函式返回值部分說到成功後有乙個檔案控制代碼被建立的...

一步一步學程式設計之Python 三

以正確的寬度在居中的 盒子 內列印乙個句子 參見python基礎教程第二版 清單2 3,但我按照書上所抄錄的 在實際執行中,列印sentence這一行的最右邊的界線符 不能夠對齊 coding utf 8 sentence raw input please enter a sentence scre...