套接字:
原型 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型別套接字,在通訊前需要建立連線,這種連線是較為可靠的,使...