socket服務端,啟動socket和監聽客戶端的連線
在stdafx.h中新增#include
在介面dlg.cpp中新增#include
還有新增#pragma comment(lib, "ws2_32.lib")
socket sock;
建立成全域性變數
開啟網路連線
wsadata wsadata;
word version = makeword(2, 2);
int ret = wsastartup(version, &wsadata);
if (ret != 0)
比較簡單的初始化socket的方式:
bool c執行緒dlg::initsocket()
m_socket = socket(af_inet, sock_stream, 0);
if (invalid_socket == m_socket)
sockaddr_in addrsock;
addrsock.sin_family = af_inet;
addrsock.sin_port = htons(12345);
addrsock.sin_addr.s_un.s_addr = htonl(inaddr_any);
int retval;
retval = bind(m_socket, (sockaddr*)&addrsock, sizeof(sockaddr));
if (socket_error == retval)
return
true;
}
監聽等操作(整合到執行緒裡面):
if (listen(m_socket, 5) == socket_error)//監聽客戶端,如果是基於udp的,則不需要listen
messagebox(_t("開始監聽"), _t("通知"));
//監聽通過
sockaddr_in addrfrom;
int len = sizeof(sockaddr);
socket connectsocket = accept(m_socket, (sockaddr*)&addrfrom, &len); //得到客戶端的ip位址。
char recvbuf[200] = ;//獲取客戶端傳送的訊息
int retval = recv(connectsocket, recvbuf, 200, 0);
if (socket_error == retval)
return;
Linux下簡單的socket程式設計
其實,有過window網路程式設計經驗的人,會很快的熟悉簡單的linux網路程式設計,其中大部分有關socket的命令都是相似的,其中存在的區別有二點 1.windows有關socket程式設計需要載入相關的鏈結庫,比如 ws2 32.lib,其中標頭檔案是,而linux下卻不需要載入這樣的連線庫,...
Linux下的簡單socket程式設計示例
api中用到的結構體 1.struct sockaddrstruct sockaddr sockaddr包含兩部分內容 1.短整型sa family定義了位址家族型別,這個型別會用於socket 函式2.14位元組的sa data陣列預留儲存本身的位址注意 1.原本沒有sa len2.根據sa fa...
簡單的socket程式設計
服務端tcp server.c include include include include include include include define port 8888 埠位址 define backlog 2 監聽佇列長度 int main int argc,char argv memse...