linux 網路程式設計

2021-07-22 02:19:56 字數 3248 閱讀 8357

需要接收才bind

單向 需要雙向要繫結兩個埠

//int sendto(int sockfd, const void *msg, int len, unsigned int flags,const struct sockaddr *to, int tolen)

//int recvfrom(int sockfd, void *buf, int len, unsigned int flags,struct sockaddr *from, int

*fromlen);

//1.檔案描述符 2.開關狀態 0(不允許接收) 1(不允許傳送)

//int

shutdown(int sockfd, int how);

/************簡單udp(服務端)********/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define servport 1234

#define backlog 20

#define max_con_no 10

#define max_data_size 1024

int main(int argc, char *argv)

/*establish a socket*/

if((sockfd = socket(af_inet, sock_dgram, 0)) == -1)

printf("success to establish a socket...(sockfd = %d)\n", sockfd);

/*init sockaddr_in*/

serversockaddr.sin_family = af_inet;

serversockaddr.sin_port = htons(servport);

serversockaddr.sin_addr.s_addr = htonl(inaddr_any);

bzero(&(serversockaddr.sin_zero), 8);

/*bind socket*/

if(bind(sockfd, (struct sockaddr *)&serversockaddr,

sizeof(struct sockaddr))== -1)

printf("success to bind the socket...\n");

while (1)

close(sockfd);

return0;}

/*************客戶端.c**************/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define servport 2345

#define backlog 20

#define max_con_no 10

#define max_data_size 1024

int main(int argc, char *argv)

/*establish a socket*/

if((sockfd = socket(af_inet, sock_dgram, 0)) == -1)

printf("success to establish a socket...(sockfd = %d)\n", sockfd);

/*init sockaddr_in*/

serversockaddr.sin_family = af_inet;

serversockaddr.sin_port = htons(servport);

serversockaddr.sin_addr.s_addr = htonl(inaddr_any);

bzero(&(serversockaddr.sin_zero), 8);

/*bind socket*/

if(bind(sockfd, (struct sockaddr *)&serversockaddr,

sizeof(struct sockaddr))== -1)

printf("success to bind the socket...\n");

while (1)

close(sockfd);

return

0;}

(實現乙個程序監聽多個會話客戶端)

使用地方:

當乙個客戶端需要同時處理多個檔案描述符的輸入輸出操作的時候(一般來說是標準的輸入輸出和網路套接字), i/o 多路復用技術將會有機會得到使用。

當程式需要同時進行多個套接字的操作的時候。

如果乙個 tcp 伺服器程式同時處理正在偵聽網路連線的套接字和已經連線好的套接字。

如果乙個伺服器程式同時使用 tcp 和udp 協議。

如果乙個伺服器同時使用多種服務並且每種服務可能使用不同的協議(比如inetd就是這樣的)。

//1.最大檔案描述符+1

2.讀子集 3.寫子集 4.異常子集(無讀寫) 5.超時(null)

// int

select(int numfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);

/*********利用select實現定時器功能****/

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main(int argc, char *argv)

return

0;}

Linux網路程式設計

linux網路程式設計 當然,我們現在,將要開始編寫的第乙個網路程式,雖然非常簡單,但是卻可以很 清楚的說明大部分編寫網路程式需要的基本概念,好了先讓我們看看網路程式的tcp服 務器端的編寫步驟 1.和伺服器的步驟一樣。2.通過設定套介面位址結構,我們說明,客戶端要與之通訊的伺服器的ip位址和 埠。...

linux 網路程式設計

當然,我們現在,將要開始編寫的第乙個網路程式,雖然非常簡單,但是卻可以很 清楚的說明大部分編寫網路程式需要的基本概念,好了先讓我們看看網路程式的tcp服 務器端的編寫步驟 現在讓我們來看看網路程式客戶端的程式設計步驟 以上的步驟,是比較普遍的,我們可以從中看出,編寫網路程式是很有意思的,同 時,也不...

linux 網路程式設計

套接字程式設計 struct sockaddr unsigned short sa family 位址協議,ipv4 tcp ip af inet,ipv6 af inet6 char sa data 14 14位元組的位址協議 struct sockaddr in unsigned short s...