C Socket程式設計之TCP協議收發資料詳解

2021-10-08 21:53:08 字數 1994 閱讀 9283

伺服器端配置步驟:

1、建立乙個socket : listener= new socket()

2、繫結本機的ip位址、埠等資訊: listener.bind()

3、開啟監聽: listener.listen()

4、接收客戶端上來的連線:socket=listener accept()。

5、收發資料: send()、recv(),ead()、write()。

6、關閉網路連線: socket.close()

7、關閉監聽: listener.close()

客戶端配置步驟:

1、建立乙個socket socket=new socket()

2、連線伺服器(ip位址和埠): socket.connect()。

5、收發資料,用函式send()和recv(),或者read()和write()。

6、關閉網路連線。 

補充用 system.net.dns.gethostaddresses("localhost")[1].tostring(); 取得的也是127.0.0.1

參考: 也與我的情況不一樣。

想想我是在區域網中,用ipconfig /all 找到自己的ip  192.168.3.5 替換  127.0.0.1 新增防火牆規則,仍不行。關閉防火牆,還不行。

(如何獲得ip,還可參考:

正準備放棄時,看到  其中有一句:

需要你用tcpclient訪問的ip的埠正在被監聽,否則就會顯示積極拒絕,不是看他是否被占用,要看他是否在監聽

想想我是直接整體複製的**,不是雙擊窗體後單獨寫的formmain_load**。而服務端應該是在formmain_load時開始監聽。

於是重新修改**,使得formmain_load時先執行服務端監聽的**。重新生成並執行,正常。這個錯誤太低階。

如果在區域網兩台電腦上分別執行客戶端和服務端,要確保能ping通,檢查防火牆規則。參考這裡:

2、另外,這裡還有個例子:

3、參考:

socket起源於unix,而unix/linux基本哲學之一就是「一切皆檔案」,都可以用「開啟open –> 讀寫write/read –> 關閉close」模式來操作。我的理解就是socket就是該模式的乙個實現,socket即是一種特殊的檔案,一些socket函式就是對其進行的操作(讀/寫io、開啟、關閉)。 

如果作為乙個伺服器,在呼叫socket()、bind()之後就會呼叫listen()來監聽這個socket,如果客戶端這時呼叫connect()發出連線請求,伺服器端就會接收到這個請求。

isten函式的第乙個引數即為要監聽的socket描述字,第二個引數為相應socket可以排隊的最大連線個數。socket()函式建立的socket預設是乙個主動型別的,listen函式將socket變為被動型別的,等待客戶的連線請求。

tcp伺服器端依次呼叫socket()、bind()、listen()之後,就會監聽指定的socket位址了。tcp客戶端依次呼叫socket()、connect()之後就向tcp伺服器傳送了乙個連線請求。tcp伺服器監聽到這個請求之後,就會呼叫accept()函式取接收請求,這樣連線就建立好了。之後就可以開始網路i/o操作了,即類同於普通檔案的讀寫i/o操作。

4、tcp協議三次握手過程分析 參考:

5、c# tcp多執行緒伺服器示例 參考:

6. c# socket埠復用-多主機頭繫結 參考:

7、定時執行、一對多  參考: 

8、在同步模式中,在伺服器上使用accept方法接入連線請求,而在客戶端則使用connect方法來連線伺服器。相對地,在非同步模式下,伺服器可以使用beginaccept方法和endaccept方法來完成連線到客戶端的任務,在客戶端則通過beginconnect方法和endconnect方法來實現與伺服器的連線。  參考:

9、c#的ipaddress ipendpoint  參考

**:

c socket程式設計之ftp

class ftp class region 連線 連線 private void connect string path 連線ftp endregion region ftp登入資訊 ftp登入資訊 ftpserverip ftpuserid ftppassword public void ftp...

c socket程式設計之美

一 ip位址操作類 1 ipaddress類 a 在該類中有乙個parse方法,可以把點分的十進位制ip表示轉化成ipaddress類,方法如下 ipaddress address ipaddress.parse 192.168.0.1 b ipaddress提供4個唯讀字段 any 用於代表本地系...

網路程式設計之TCP協議整理

建立連線,形成傳輸資料的通道,在連線中進行大資料量的傳輸。需要通過三次握手完成連線,是可靠地協議。但是效率低。客戶端建立過程。1 建立tcp客戶端socket伺服器,使用的是socket物件,建立物件時明確目的地,以及要連線的主機。2 如果連線成功,說明資料傳輸通道已經建立。這個通道就是流,sock...