導航:首頁 > IDC知識 > 伺服器socket通信

伺服器socket通信

發布時間:2020-11-13 10:42:32

1、TCP/IP 使用Socket 實現客戶端與伺服器端通信

對於伺服器,你先創建一個套接字(socket),然後bind綁定一個套接地址,然後你在用listen,此時你的伺服器會一直阻塞在這,處於監聽狀態,檢查是否有客戶端來connect,一旦有的話,你的伺服器就會accept。
所以,是你的伺服器是處於監聽狀態,監聽是否有客戶端,然後由客戶端來連接伺服器,伺服器接受客戶端的連接,而不是伺服器去連接客戶端。

2、c#Socket實現客戶端之間通訊,不是與伺服器之間的通訊

都可以的,SOCKET可以實現2種通信方式,一種是P2P也就是點對點,客戶端與客戶端之間的通信。另一種就是現在QQ這種,客戶端連接到伺服器,再由伺服器轉發給制定用戶。你要實現這種方式,最好自己定義個類,發送的時候,直接打包類發送;然後接收的時候,數據直接套入類中,類得包括發送給誰的標識和內容。復雜點的還可包括其他內容,只要根據功能自己定義就行。

3、socket通信中 ,伺服器如何獲取連接的客戶端的主機名。求函數代碼

getpeername()

這個系統的調用十分簡單。它將告訴你是誰在連接的另一端:
#include<sys/socket.h>
int getpeername(int sockfd,struct sockaddr* addr,int* addrlen);
第一個參數是連接的數據流套介面文件描述符。
第二個參數是指向包含另一端的信息的數據結構sockaddr的指針。
第三個參數可以設置為sizeof(structsockaddr)。
如果出錯,系統調用將返回-1。
一旦你獲得了它們的地址,你可以使用inet_ntoa()或者gethostbyaddr()來得到更多的信息。

[目錄]

gethostname()

系統調用gethostname()比系統調用getpeername()還簡單。它返回程序正在運行的計算機的名字。系統調用gethostbyname()可以使用這個名字來決定你的機器的IP地址。
下面是一個例子:
#include<unistd.h>
int gethostname(char*hostname,size_tsize);
如果成功,gethostname將返回0。如果失敗,它將返回-1。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1735515

4、網頁和伺服器的交互需要用到socket嗎

用到了,因為socket通信是計算機網路編程的基礎,互聯網上的通信離不開它。
說詳細一點,至少要明白HTML,socket編程,計算機網路的TCP/IP模型。
1、TCP/IP是計算機通信的基礎;

2、socket通信本來是UNIX的基於伺服器/客戶端的TCP/IP實現,不過目前幾乎所有的操作系統都兼容;
3、HTML是運行在SOCKET的80埠上的高層網路協議。
如果你有時間和精力,完全可以使用SOCKET自行開一個WEB伺服器

5、socket,tcp,http三者之間的區別和原理

最大區別socket是網路層,http是應用成。。
socket是一個程序組件,它支持TCP,UDP等網路通訊協議專,也就是通過socket這個東西你屬可以和任何互聯網或區域網上的計算機通訊。。。TCP,UDP是一個網路層協議,網路層協議不管你發的內容是啥,他只負責把你想法的東西發到對面,發的是啥,他完全不管,因為他不是應用層。。。。
http是應用層協議,在socket的TCP層之上,他是管你發送的內容是什麼的,比如你發的是啥,圖片還是文字還是視頻數據流,發成功了沒有,用什麼語言發,都做了詳細的定義,這樣可以保證寫軟體的人只要按照約定處理數據,就能得到想要的結果。。。
通訊的目的就是應用,所以應用是頂層,否則你發的是坨屎,還是別的什麼,無從知道,因為數據都是二進制數據流,必須描述清楚,約定好。。。

6、http和socket通信的區別

http是客戶端用http協議進行請求,發送請求的時候需要封裝http請求頭,並綁定請求的數據,伺服器一專般有web伺服器配合(當然屬也非絕對),http的請求方式為客戶端主動發起請求,伺服器才能給響應,一次請求完畢後則斷開連接,以節省資源.伺服器不能主動給客戶端發起響應.iphine主要使用類是NSURLConnection
Socket是客戶端跟伺服器直接使用Socket"套接字"進行連接,並沒有規定連接後斷開,所以客戶端和伺服器可保持連接通道,雙方都可以主動發送數據,一般在游戲開發或股票開發這種要求即時性很強並且保持發送數據量比較大的場合使用.主要使用類是CFSocketRef

7、服務端和客戶端如何進行跨網段socket通信

這個嘛得知道各自的抄ip和程序的編號,
然後伺服器綁定自己的ip和編號bind然後監聽連接請求 listen 客戶端申請所要鏈接的ip和對方的編號connect
這是tcp
udp就是都綁定各自的ip和程序的編號,誰主動connect,誰就是客戶端,伺服器端listen就行 ,這個傳輸數據快,但是不可靠,一般網頁播放的媒體影音,就是用。

跨網段,這個不用你操心,協議已經考慮到了。

8、伺服器Socket Interface是什麼?

Socket介面是TCP/IP網路的API(Application Programming Interface,應用程序編程介面),Socket介面定義了許多函數或常式,程序員可以用它們來開發 TCP/IP網路上的應用程序。

請參閱以下資料:

socket非常類似於電話插座。以一個國家級電話網為例。電話的通話雙方相當於相互通信的2個進程,區號是它的網路地址;區內一個單位的交換機相當於一台主機,主機分配給每個用戶的局內號碼相當於socket號。任何用戶在通話之前,首先要佔有一部電話機,相當於申請一個socket;同時要知道對方的號碼,相當於對方有一個固定的socket。然後向對方撥號呼叫,相當於發出連接請求(假如對方不在同一區內,還要撥對方區號,相當於給出網路地址)。對方假如在場並空閑(相當於通信的另一主機開機且可以接受連接請求),拿起電話話筒,雙方就可以正式通話,相當於連接成功。雙方通話的過程,是一方向電話機發出信號和對方從電話機接收信號的過程,相當於向socket發送數據和從socket接收數據。通話結束後,一方掛起電話機相當於關閉socket,撤消連接。

在電話系統中,一般用戶只能感受到本地電話機和對方電話號碼的存在,建立通話的過程,話音傳輸的過程以及整個電話系統的技術細節對他都是透明的,這也與socket機制非常相似。socket利用網間網通信設施實現進程通信,但它對通信設施的細節毫不關心,只要通信設施能提供足夠的通信能力,它就滿足了。

至此,我們對socket進行了直觀的描述。抽象出來,socket實質上提供了進程通信的端點。進程通信之前,雙方首先必須各自創建一個端點,否則是沒有辦法建立聯系並相互通信的。正如打電話之前,雙方必須各自擁有一台電話機一樣。在網間網內部,每一個socket用一個半相關描述:

(協議,本地地址,本地埠)

一個完整的socket有一個本地唯一的socket號,由操作系統分配。

最重要的是,socket 是面向客戶/伺服器模型而設計的,針對客戶和伺服器程序提供不同的socket 系統調用。客戶隨機申請一個socket (相當於一個想打電話的人可以在任何一台入網電話上撥號呼叫),系統為之分配一個socket號;伺服器擁有全局公認的 socket ,任何客戶都可以向它發出連接請求和信息請求(相當於一個被呼叫的電話擁有一個呼叫方知道的電話號碼)。

socket利用客戶/伺服器模式巧妙地解決了進程之間建立通信連接的問題。伺服器socket 半相關為全局所公認非常重要。讀者不妨考慮一下,兩個完全隨機的用戶進程之間如何建立通信?假如通信雙方沒有任何一方的socket 固定,就好比打電話的雙方彼此不知道對方的電話號碼,要通話是不可能的。

9、socket通信:一個客戶端可以同時與多個伺服器通信嗎?

通信肯定不是問題,問題是在於數據如何共享

與伺服器socket通信相關的知識