套接字總結

2021-08-01 17:36:00 字數 1885 閱讀 1892

套接字:

原型 int socketpair(int domain, int type, int protocol, int sv[2]); 

引數 domain: 協議家族

,type: 套接字型別

,protocol: 協議型別 

,sv: 返回套接字對 

返回值:成功返回0;失敗返回-1 

建立套接字例子:

socketpair(af_local,sock_stream,0,sv)

af_local代表協議家族為unix。

sock_stream:

提供面向連線

的穩定資料傳輸,即tcp協議

。sock_dgram

:分是資料報,是udp協議網路程式設計是基於

udp的,專門用於區域網,基於廣播

引數protocol用來指定socket所使用的

傳輸協議

編號。這一引數通常不具體設定,一般設定為0即可

。sv[0]和sv[1]都可以讀寫

例子:使用套接字實現客戶伺服器模型(c/s)

int main(int argc,char* argv)else{// child

close(sv[1]);

read(sv[0],buf,bufsiz);

printf("file path:%s\n",buf);

int fd = open(buf,o_rdonly);

bzero(buf,bufsiz);

read(fd,buf,bufsiz);

write(sv[0],buf,bufsiz);

// read(sv[1],buf,bufsiz);

使用兩個fifo實現客戶伺服器模型:

伺服器端:

#include

#include

#include

#include

#include

#include

int main(int argc,char* argv){

mkfifo("/tmp/cs",0644);

int fifofd = open("/tmp/cs",o_rdonly);

char buf[bufsiz];

read(fifofd,buf,bufsiz);

printf("%d file path:%s\n",getpid(),buf);

int fd = open(buf,o_rdonly);

bzero(buf,bufsiz);

read(fd,buf,bufsiz);

mkfifo("/tmp/cs1",0644);

int fifofd1= open("/tmp/cs1",o_wronly);

write(fifofd1,buf,bufsiz);

close(fifofd);

close(fifofd1);

客戶端:

int main(int argc,char* argv){

mkfifo("/tmp/cs",0644);

mkfifo("/tmp/cs1",0644);

int fifofd = open("/tmp/cs",o_wronly);

char buf[bufsiz];

write(fifofd,argv[1],strlen(argv[1])+1);

printf("%d write file:%s",getpid(),argv[1]);

//sleep(1);

int fifofd1 = open("/tmp/cs1",o_rdonly);

read(fifofd1,buf,bufsiz);

printf("%d client read:\n%s",getpid(),buf);

linux Linux學習總結 套接字

bsd套接字介面 l i n u x支援多種套接字型別。套接字型別,是指建立套接字的應用程式所希望的通訊服務 型別。同一協議族可能提供多種服務型別,比如t c p i p協議族提供的虛電路與資料報就是兩 種不同的通訊服務型別,linux bsd支援如下幾種套接字型別 stream 提供可靠的面向連線...

監聽套接字 連線套接字

摘要 對於伺服器程式設計中最重要的一步等待並接受客戶的連線,那麼這一步在程式設計中如何完成,accept函式就是完成這一步的。它從核心中取出已經建立的客戶連線,然後把這個已經建立的連線返回給使用者程式,此時使用者程式就可以與自己的客戶進行點到點的通訊了。accept函式等待並接受客戶請求 inclu...

python套接字 python套接字基本使用

socket socket通常也稱作 套接字 用於描述ip位址和埠,應用程式通常通過 套接字 向網路發出請求或者應答網路請求,可以認為是一種計算機網路的資料結構,介面。它是網路程式設計的基礎 套接字還分為面向連線的和無連線的 第一種是指tcp型別套接字,在通訊前需要建立連線,這種連線是較為可靠的,使...