Socket 程式設計(TCP)

2021-06-20 08:46:27 字數 1933 閱讀 1374

下面是接收資料和傳送資料的函式

[cpp]view plain

copy

intreceive(socket fd, 

char

*sztext, 

intlen)  

if(rc == 0)  

return

len - cnt;  

sztext += rc;  

cnt -= rc;  

}  return

len;  

}  int

send(socket fd, 

char

*sztext, 

intlen)  

if(rc == 0)  

return

len - cnt;  

sztext += rc;  

cnt -= rc;  

}  return

len;  

}  

伺服器端:

在伺服器端,主要是啟動socket和監聽執行緒。

[cpp]view plain

copy

#define default_port 2000

void

cserverdlg::onstart()  

//將本地位址繫結到所建立的套接字上

if(bind(m_listening, (lpsockaddr) &local, 

sizeof

(local)) == socket_error)  

//建立監聽執行緒,這樣也能響應介面上操作。

m_hlistenthread = ::createthread(null, 0, listenthread, this

, 0,  

&dwthreadid);  

m_startbtn.enablewindow(false);  

m_stopbtn.enablewindow(true);  

}  //監聽執行緒函式:

word

winapi cserverdlg::listenthread(

lpvoid

lpparam)  

char

szbuf[max_path];  

//初始化

memset(szbuf, 0, max_path);  

while

(1)  

return

0;  

}  

伺服器端一直在監聽是否有客戶端連線,如有連線,處理客戶端的請求,給出回應,然後繼續監聽。

客戶端:

客戶端的傳送函式:

[cpp]view plain

copy

#define default_port 2000

void

cclientdlg::onsend()  

//傳送請求,為簡單只發100位元組,在伺服器端也規定100位元組。

send(sockettmp, sztext, 100);  

//讀取伺服器端返回的資料。

memset(sztext, 0, max_path);  

//接收伺服器端的回應。

receive(sockettmp, sztext, 100);  

char

szmessage[max_path];  

memset(szmessage, 0, max_path);  

strcat(szmessage, sztext);  

//介面上顯示回應資料。

m_replybtn.setwindowtext(szmessage);  

closesocket(sockettmp);  

}  

Socket 程式設計(TCP)

詳細請參見 點我o o哈!很不錯的一篇文章哈 下面是接收資料和傳送資料的函式 int receive socket fd,char sztext,int len if rc 0 return len cnt sztext rc cnt rc return len int send socket fd...

socket程式設計TCP

注意一定要先啟動server,再啟動client,否則client因為無法找到server而丟擲異常 coding utf 8 from socket import serverport 12000 af inet表示底層網路使用的是ipv4,sock stream表示使用的socket型別是tcp...

socket程式設計 TCP

socket本身有 插座 的意思,在linux環境下,用於表示程序間網路通訊的特殊檔案型別。本質為核心借助緩衝區形成的偽檔案。既然是檔案,那麼理所當然的,我們可以使用檔案描述符引用套接字。與管道類似的,linux系統將其封裝成檔案的目的是為了統一介面,使得讀寫套接字和讀寫檔案的操作一致。區別是管道主...