網路通訊和Socket 詳細例子

2021-10-08 16:01:20 字數 2186 閱讀 9014

對於計算機世界來說,每個方法和資料結構都是我們現實生活的乙個投影和體現,希望我對於網路通訊和socket的一些理解能夠給你帶來幫助。

我們如果去寄信,信件寫上位址和你準備寄給誰並把它放到郵筒中(郵局),對方也有個小郵筒用來接收別人發給它的信件,如果對方的位址是你填的位址的話信件就收下,那樣對方才能夠接收得到(對方也就知道了你的位址,也可以給你回信),如果我們只寫了位址,沒寫姓名的話那麼同一家人他們也不知道是給誰得信。

分析:利用socket實現乙個簡單的回聲伺服器

客戶端對伺服器進行連線,並且傳送資料,伺服器接收到了以後反饋給客戶端一些資訊

echo_server.c

#include

#include

#include

#include

#include

#include

#include

#define server_port 666

intmain

(void

)//傳送資訊回去

len =

write

(client_sock, buf, len)

;printf

("finished. len: %d\n"

, len)

;close

(client_sock)

;//關閉交流的通道

}close

(sock)

;return0;

}

echo_client.c

#include

#include

#include

#include

#include

#include

#define server_port 666

#define server_ip "127.0.0.1"

intmain

(int argc,

char

*ar**)

message = ar**[1]

;//ar**[0]就是編譯的檔案:./echo_client "this is test"

printf

("message: %s\n"

, message)

; sockfd =

socket

(af_inet, sock_stream,0)

;memset

(&servaddr,

'\0'

,sizeof

(struct sockaddr_in));

servaddr.sin_family = af_inet;

inet_pton

(af_inet, server_ip,

&servaddr.sin_addr)

; servaddr.sin_port =

htons

(server_port)

;connect

(sockfd,

(struct sockaddr *

)&servaddr,

sizeof

(servaddr));

//建立連線

write

(sockfd, message,

strlen

(message));

n =read

(sockfd, buf,

sizeof

(buf)-1

);if(n>0)

else

printf

("finished.\n");

close

(sockfd)

;return0;

}

執行結果:

總結:對於伺服器端和客戶端方面不同地方在於,伺服器端就相當於對方的郵筒,拿來收信件要繫結位址(不能隨意更改),而客戶端就像是我們寫信只要寫上對方的位址和是誰(埠號)想要對誰進行連線就好不用去繫結位址,當你傳送信件給對方時對方也就可以知道你的位址(可以用乙個socket來儲存住,那樣它就可以根據你的位址對你進行回信)

Socket網路通訊

服務端的程式如下 1.建立乙個伺服器端socket,即serversocket,指定繫結的埠,並監聽此埠8888 serversocket serversocket new serversocket 8888 socket socket null 記錄客戶端的數量 int count 0 syste...

socket網路通訊

read write recv send readv writev recvmsg sendmsg recvfrom sendto include ssize t read int fd,void buf,size t count ssize t write int fd,const void bu...

socket網路通訊《二》

socket網路通訊 本文注意基於socket來分析tcp連線建立過程。先回顧一下tcp連線建立過程 主機a執行的是tcp客戶端程式,主機b執行的是tcp伺服器程式,最初兩端tcp程序處於closed態,a主動開啟連線,對應客戶端connect函式發起連線,b被動接受連線,對應於伺服器listen函...