網路程式設計 筆記(二) 基於 Windows簡單通訊

2021-07-05 18:44:23 字數 2523 閱讀 8807

windows套接字程式設計

1、設定庫alt+f7 ->「配置屬性」-> 「聯結器」 -> 「輸入」 -> 「附加依賴項」 -> 「ws2_32.lib

2、標頭檔案:#include

3、winsock的初始化

- 首先必須呼叫wsastartup函式,設定程式中用到的winsock版本,並初始化響應版本的庫。

-int wsastartup(word wversionrequested, lpwsadata lpwsdata);

- 成功時返回0, 失敗時返回非零的錯誤**值。

- wversionrequested 是winsock的版本資訊。

- lpwsdata wsadata結構體變數的位址值

- 借助makeword巨集函式構建word型版本資訊,

- 如:makeword(1, 2);表示主版本為1,副版本為2,返回0x0201

4、winsock的登出

-int wsaclenup();

- 成功時返回0, 失敗時返回socket_error。

- 呼叫該函式時,winsock相關庫歸還windows作業系統,無法再呼叫winsock相關函式 //

#include "stdafx.h"

#include

#include

void efforhandling(char *message);

int main(int argc, char* argv)

if (wsastartup(makeword(2, 2), &wsadata) != 0)

hservsock = socket(pf_inet, sock_stream, 0);

if (hservsock == invalid_socket)

memset(&servaddr, 0, sizeof(servaddr));

servaddr.sin_family = af_inet;

servaddr.sin_addr.s_addr = htonl(inaddr_any);

servaddr.sin_port = htons(atoi(argv[1]));

if (bind(hservsock, (sockaddr*)&servaddr, sizeof(servaddr)) == socket_error)

if (listen(hservsock, 5) == socket_error)

szclntaddr = sizeof(clntaddr);

hclientsock = accept(hservsock, (sockaddr*)&clntaddr, &szclntaddr);

if (hclientsock == invalid_socket)

send(hclientsock, message, sizeof(message), 0);

closesocket(hclientsock);

closesocket(hservsock);

wsacleanup();

system("pause");

return0;}

void efforhandling(char *message)

//#include "stdafx.h"

#include

#include

void efforhandling(char *message);

int main(int argc, char* argv)

if (wsastartup(makeword(2, 2), &wsadata) != 0)

hsocket = socket(pf_inet, sock_stream, 0);

if (hsocket == invalid_socket)

memset(&servaddr, 0, sizeof(servaddr));

servaddr.sin_family = af_inet;

servaddr.sin_addr.s_addr = inet_addr(argv[1]);

servaddr.sin_port = htons(atoi(argv[2]));

if (connect(hsocket, (sockaddr*)&servaddr, sizeof(servaddr)) == socket_error)

strlen = recv(hsocket, message, sizeof(message)-1, 0);

if (strlen == -1)

printf("message from server: %s \n", message);

closesocket(hsocket);

wsacleanup();

system("pause");

return0;}

void efforhandling(char *message)

linux c 筆記 網路程式設計(二)

套接字 struct sockaddr結構定義了一種通用的套接字位址,他在linux socket.h中定義如下 struct sockaddr 現在一般使用下面這個sockaddr in結構 用來設定 獲取位址資訊 struct sockaddr in 其中,in addr這個資料結構 struc...

window下python網路程式設計問題

最近在學習 在編寫非同步python套接字伺服器應用程式時遇到問題,顯示如下 發現 os.fork 呼叫與 module object has no attribute fork 即os塊沒有fork函式,os是python內建的塊怎麼會沒有fork函式?然後發現問題是window環境下沒有fork...

基於TCP的網路程式設計

伺服器端程式 include include pragma comment lib,ws2 32.lib int main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 printf version d.d n lobyte wsada...