當前位置:編程學習大全網 - 編程語言 - 套接字編程

套接字編程

套接字通信創建步驟:

(1)通過socket()函數創建壹個套接字。

(2)通過綁定函數將套接字綁定到設備地址。

(3)read/recv/recvfromwrite/send/send to。

(4)close方法關閉套接字。

例子如下:

test1.c

#包含?& ltstdio.h & gt

#包含?& ltstdlib.h & gt

#包含?& ltunistd.h & gt

#包含?& ltnetinet/in . h & gt;

#包含?& ltarpa/inet . h & gt;

int?主要(無效)

{

//創建?(電源)插座

int?fd?=?套接字(AF_INET,?SOCK_DGRAM,?0);

if(fd==-1)

{

perror(" socket \ n ");

退出(-1);

}

printf("socket?fd=%d\n ",FD);

//構建?聯系?地址

struct?sockaddr_in?addr

addr.sin_family?=?AF _ INET

addr.sin_port?=?htons(6666);

addr.sin_addr.s_addr?=?inet _ addr(" 127 . 0 . 0 . 1 ");

int?r;

r?=?bind(fd,(struct?sockaddr *)& amp;addr,sizeof(addr));

if(r==-1)

{

perror(" bind ");

關閉(FD);

退出(-1);

}

printf("bind?地址?成功了!\ n ");

//接受?還是?發送?消息

夏爾?buf[255];

struct?sockaddr_in?從;

socklen_t?len

萊恩。=?sizeof(from);

while(1)

{

r?=?recvfrom(fd,buf,sizeof(buf)-1,0,(struct?sockaddr *)& amp;從& amplen);

if(r & gt;0)

{

buf[r]= 0;

printf("The?留言?從哪裏?%s?is:%s\n ",inet_ntoa(from.sin_addr),buf);

}

其他

{

打破;

}

}

//關閉?(電源)插座

關閉(FD);

回歸?0;

}test2.c

#包含?& ltstdio.h & gt

#包含?& ltstdlib.h & gt

#包含?& ltunistd.h & gt

#包含?& ltstring.h & gt

#包含?& ltsys/socket . h & gt;

#包含?& ltnetinet/in . h & gt;

#包含?& ltarpa/inet . h & gt;

int?主要(無效)

{

//創建?(電源)插座

int?fd?=?socket(AF_INET,SOCK_DGRAM,0);

if(fd==-1)

{

perror(“插座”);

退出(-1);

}

printf("創建?插座?好吧!\ n ");

//創建?安?發送?地址

struct?sockaddr_in?addr = { };

addr.sin_family?=?AF _ INET

addr.sin_port?=?htons(6666);

addr . sin _ addr . s _ addr = inet _ addr(" 127 . 0 . 0 . 1 ");

//發送?那個?留言?去哪?那個?指定?地址

int?r;

夏爾?buf[255];

while(1)

{

r?=?read(0,buf,sizeof(buf)-1);

if(r & lt;=0)

打破;

sendto(fd,buf,r,0,(struct?sockaddr *)& amp;addr,sizeof(addr));

}

//關閉?(電源)插座

關閉(FD);

回歸?0;

}先運行test1.c,再運行test2.c,輸入test2.c運行後的內容,信息會顯示在test1.c所在的終端中。

運行結果如下:

  • 上一篇:社團如何規範化管理
  • 下一篇:江蘇2020年高級經濟師考試報名通知-報名公告-考務工作?
  • copyright 2024編程學習大全網