C語言 socket 通訊程式設計

2021-10-23 11:41:41 字數 3501 閱讀 8609

server端在tcp的通訊中,需要做到以下6點:

socket套接字的構造 socket

int

socket

(int domain,

int type,

int protocol)

;

domain:指定通訊域;選擇通訊的協議族。

type:型別,tcp為sock_stream,udp為sock_dgram。

protocol:協議,一般為0,會自動適配通訊域及型別的配置。

在man手冊中是這樣解釋protocol引數的:

協議指定要與套接字一起使用的特定協議。通常只有乙個協議支援給定協議族中的特定套接字型別,在這種情況下,協議可以指定為0。然而,可能存在許多協議,在這種情況下,必須以這種方式指定特定的協議

繫結 bind

int

bind

(int sockfd,

const

struct sockaddr *addr, socklen_t addrlen)

;

struct sockaddr_in 

;char

*w_buf =

"i get your message.\n"

;struct sockaddr_in s_addr;

struct sockaddr_in c_addr;

memset

(&s_addr,0,

sizeof

(struct sockaddr_in));

// 清空記憶體

memset

(&c_addr,0,

sizeof

(struct sockaddr_in));

// socket

//int socket(int domain, int type, int protocol);

int s_fd =

socket

(af_inet, sock_stream,0)

;// net tcp

if(s_fd ==-1

) s_addr.sin_family = af_inet;

s_addr.sin_port =

htons

(8989);

// 用來將主機位元組順序轉換為網路位元組順序

inet_aton

("192.168.5.20"

,&s_addr.sin_addr)

;// 轉大端

// bind

//int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

bind

(s_fd,

(struct sockaddr *

)&s_addr,

sizeof

(struct sockaddr_in));

// listen

listen

(s_fd,10)

;// accept

int clen =

sizeof

(struct sockaddr_in)

;int c_fd =

accept

(s_fd,

(struct sockaddr *

)&c_addr,

&clen);if

(c_fd ==-1

)printf

("get connect:%s\n"

,inet_ntoa

(c_addr.sin_addr));

// read

n_read =

read

(c_fd,

&r_buf,

128)

;printf

("get msg=%s, %dbytes.\n"

, r_buf, n_read)

;// write

write

(c_fd, w_buf,

strlen

(w_buf));

return0;

}

clent端需要做到一般需要做到以下4點:

socket套接字的構造 socket

連線 connect

int

connect

(int sockfd,

const

struct sockaddr *addr, socklen_t addrlen)

;

傳送 write

接收 read

#include

#include

/* see notes */

#include

//#include

#include

#include

#include

#include

#include

intmain()

;char

*w_buf =

"this is from client."

;struct sockaddr_in c_addr;

memset

(&c_addr,0,

sizeof

(struct sockaddr_in));

// socket

//int socket(int domain, int type, int protocol);

int c_fd =

socket

(af_inet, sock_stream,0)

;// net tcp

if(c_fd ==-1

) c_addr.sin_family = af_inet;

c_addr.sin_port =

htons

(8989);

inet_aton

("192.168.5.20"

,&c_addr.sin_addr)

;// connectif(

connect

(c_fd,

(struct sockaddr *

)&c_addr,

sizeof

(struct sockaddr_in))==

-1)// write

write

(c_fd, w_buf,

strlen

(w_buf));

// read

n_read =

read

(c_fd,

&r_buf,

128)

;printf

("get msg=%s, %dbytes.\n"

, r_buf, n_read)

;return0;

}

socket通訊程式設計

1 socket通訊模型如下 應用程式通過套接字可以進行通訊,可以使用udp協議或者使用tcp協議,當客戶端和伺服器端的協議時相對應的,客戶端使用tcp,那麼伺服器端使用tcp 2 udp協議 把資料打包成資料報,然後直接傳送對應的ip位址,速度快,但是不保證 成功率,並且資料大小有限 tcp協議 ...

C 後台程式設計一 socket通訊

最近要寫一些計算機網路的一些實驗,所以最近寫一些linux平台下的後台程式設計,使用c 語言編寫。沒有了windows下的ide,所以用的是記事本編寫cpp檔案,主要寫了兩個cpp檔案,乙個server,另乙個client,先上 有時間再講解 的意思。include include include ...

網路程式設計 socket程式設計通訊

一直感覺socket這個東西挺神秘的 覺得是大牛級別的才能駕輕就熟。今天碰巧看了一下socket的相關資料,通過socket實現客戶端和服務端的通訊,從實戰中去體驗socket的用處。先給大家上一張圖 這張圖大致就是tcp協議和udp協議的分布範圍,其中,socket負責的是傳輸層之間的通訊 soc...