socket實踐程式設計1

2022-09-01 01:30:17 字數 2635 閱讀 6820

1、伺服器端程式編寫

(1)、socket

(2)、bind

(3)、listen

(4)、accept,返回值是乙個fd,accept正確返回就表示我們已經和前來連線我的客戶端之間建立了乙個tcp連線了,以後我們就要通過這個連線來和客戶端進行讀寫操作,讀寫操作就需要乙個fd,這個fd就由accept來返回的了。

注意:socket返回的fd叫做監聽fd,是用來監聽客戶端的,不能用來和任何客戶端進行讀寫;accept返回的fd叫做連線fd,用來和連線那端的客戶端程式進行讀寫。

1 #include 2 #include /*

see notes

*/3 #include 4 #include 567

8#define mtport 9003

9#define seraddr "192.168.1.109"

10#define backlog 100

11int main(void)12

;17struct sockaddr_in cliaddr = ;

1819 sockfd = socket(af_inet,sock_stream,0

);20

if(sockfd == -1)21

25 printf("

socket success,sockfd = %d.\n

",sockfd);

2627

//第二步,bind繫結sockfd和當前電腦的ip位址&埠號

28 seraddr.sin_family = af_inet; //

設定位址族為ipv4

29 seraddr.sin_port = htons(mtport); //

設定位址的埠號資訊

30 seraddr.sin_addr.s_addr = inet_addr(seraddr); //

設定ip位址

31 ret = bind(sockfd, (const

struct sockaddr *)&seraddr,sizeof

(seraddr));

32if(ret < 0)33

37 printf("

bind success.\n");

3839

//第三步:listen監聽埠

40 ret =listen(sockfd,backlog);

41if(ret < 0)42

46//

第四步:accept阻塞等待客戶端接入

47 ret = accept(sockfd,(struct sockaddr *)&cliaddr,&len);

48 printf("

hahah.\n");

49return0;

50 }

2、客戶端程式編寫

(1)、socket

(2)、connect

概念:埠號,實質就是乙個數字編號,用來在我們一台主機中(主機的作業系統中)唯一的標識乙個能上網的程序。埠號和ip位址一起會被打包到當前的程序發出或者接收到的每乙個資料報中。每乙個資料報將來在網路上傳遞的時候,內部都包含了傳送方和接收方的訊息(就是ip位址和埠號),所以ip位址和埠號這兩個往往是打包在一起不分家的。

1 #include 2 #include /*

see notes

*/3 #include 4 #include 567

8#define cliport 9003 //

這裡是伺服器開放給我們的ip位址和埠號

9#define seraddr "192.168.1.109"

1011

int main(void)12

; 16

//第一步:socket

17 sockfd = socket(af_inet,sock_stream,0

);18

if(sockfd == -1)19

23 printf("

socket success,sockfd = %d.\n

",sockfd);

2425

//第二步,connect連線伺服器

26 seraddr.sin_family = af_inet; //

設定位址族為ipv4

27 seraddr.sin_port = htons(cliport); //

設定位址的埠號資訊

28 seraddr.sin_addr.s_addr = inet_addr(seraddr); //

設定ip位址

29 ret = connect(sockfd, (const

struct sockaddr *)&seraddr,sizeof

(seraddr));

30if(ret < 0)31

35 printf("

connect success,ret = %d.\n

",ret);

3637

return0;

38 }

socket程式設計實踐

socket程式設計 1 函式說明。socket 程式設計的基本函式有 socket bind listen accept send sendto recv 以及 recvfrom 等,其中根據客戶端還是服務端,或者根據使用 tcp 協議還是 udp 協議,這些函式的呼叫流程都有所區別,這裡先對每個...

socket程式設計實踐

建立連線 1.1socket 非常類似於open函式,用來開啟乙個網路連線,如果成功則返回乙個網路檔案描述符 int型別 之後我們操作這個網路連線都通過這個網路檔案描述符 1.2bind繫結的意思 好比是ioctl 1.3listen監聽 1.4connect連線 客戶端 傳送和接收 2.1 sen...

五 socket實踐程式設計

1 伺服器端程式編寫 1 socket 2 bind 3 listen 4 accept,返回值是乙個fd,accept正確返回就表示我們已經和前來連線我的客戶端之間建立了乙個tcp連線了,以後我們就要通過這個連線來和客戶端進行讀寫操作,讀寫操作就需要乙個fd,這個fd就由accept來返回了。注意...