Linux 高階Socket程式設計

2021-07-09 07:02:35 字數 2502 閱讀 3489

基本套接字分為客戶機/伺服器和點對點模式。

c/s:sever/client---------------------------一般採用tcp

b/s:browser/server-----------------------一般採用udp

常用的資料結構有in_addr(儲存ip位址),sockaddr_in(表示internet協議位址結構),sockaddr(儲存主機ip位址和介面資訊)。

struct

in_addr s_un_b;

struct

s_un_w;

u_long s_addr;

} s_un;

}

struct

sockaddr_in;

struct

sockaddr;

例子:

in_addr test;

test..s_un_b.s_b1=192

;test..s_un_b.s_b2=168

;test..s_un_b.s_b3=0

;test..s_un_b.s_b4=1;

struct

sockaddr_in serveraddr;

memst(&serveraddr,0,sizeof(struct

sockaddr_in));

serveraddr.sin_family=af_inet; //

af_inet表示tcp

serveraddr.sin_port=htons(80

);serveraddr.sin_addr.s_addr=htonl(inaddr_any); //

inaddr_any表示當前所用的ip

常用函式

#incldue//

建立套接字

socket pascal far socket(int af, int type, int

protocol)

//af指定通訊協議--af_unix,af_inet,af_ns

//type指定套接字型別,sock_stream(tcp),sock_dgram(udp),sock_ram(原始套接字)

//protocol指定特定協議

//套接字繫結

int pascal far bind(socket s, const

struct sockaddr far *name, int

namelen)

//s指定要關聯的套接字

//name指定要繫結的ip位址與埠資訊

//偵聽

int pascal far listen(socket s, int

backlog)

//backlog指定請求連線佇列的最大長度,一般設為5

//偵聽,接受資料

socket pascal far accept(socket s, struct sockaddr far* addr, int far*addrlen)

//s為當前指定的套接字

//addr為儲存當前客戶端的位址資訊

//建立連線

int pascal far connect(socket s, const

struct sockaddr far* name, int

namelen)

//tcp傳送資料

int pasacal far send(socket s, const

char far* buf, int len, int

flags);

//s指定已經連線的套接字

//buf表示待傳送資料的緩衝區

//flags用於設定傳送控制引數,一般為0

//tcp接受資料

int pasacal far recv(sockaet s,char far* buf,int len,int

flags);

//udp傳送資料

ssize_t sendto(int sockfd, const

void *buf, size_t len, int flags, const

struct sockaddr *to, socklen_t tolen)

ssize_t recvform(

int sockfd, const

void *buf, size_t len, int flags, const

struct sockaddr *from

, socklen_t fromlen)

//sockfd表示已經建立好的乙個udp套接字

用於設定接受方和傳送方的位址資訊

//tolen,fromlen用於設定位址資訊的長度

例子:tcp:

udp:

from: 

Socket高階程式設計 一

套接字選項 套接字建立之後,可使用套接字選項設定套接字的屬性,以改變套接字的行為 1.setsockopt int setsockopt socket s,int level,int optname,const char optval,int optlen 函式功能 設定套接字選項 引數 第乙個引數...

LINUX程式設計 socket程式設計

什麼是套接字 套接字是一種通訊過程,它使客戶 伺服器系統的開發工作既可以在本地單機上進行,也可以跨網路進行。套接字建立過程 1,建立乙個套接字,這是分配給該伺服器程序的乙個作業系統資源,套接字由伺服器通過系統呼叫socket建立出來的,所以其它程序將不能對它進行訪問。2,給套接字起個名字,用系統呼叫...

SOCKET程式設計(LINUX)

現在的網路程式設計幾乎都是用的socket 本地的程序間通訊 ipc 有很多種方式,但可以總結為下面4類 2.我們要討論的是網路中程序之間如何通訊?在本地可以通過程序pid來唯一標識乙個程序,但是在網路中這是行不通的。三元組 ip位址,協議,埠 就可以標識網路的程序了,網路中的程序通訊就可以利用這個...