在win32平台上的winsock程式設計都要經過下列步驟:
定義變數->獲得windock版本->載入winsock庫->初始化->建立套接字->設定套接字選項->關閉套接字->解除安裝winsock庫->釋放資源
1、建立乙個socket,用函式socket()
int socket(int domain, int type, int protocol);
其中 「int domain」引數表示套接字要使用的協議簇,協議簇的在「linux/socket.h」裡有詳細定義,常用的協議簇:
af_unix(本機通訊)
af_inet(tcp/ip – ipv4)
af_inet6(tcp/ip – ipv6)
其中 「type」引數指的是套接字型別,常用的型別有:
sock_stream(tcp流)
sock_dgram(udp資料報)
sock_raw(原始套接字)
最後乙個 「protocol」一般設定為「0」,也就是當確定套接字使用的協議簇和型別時,這個引數的值就為0,但是有時候建立原始套接字時,並不知道要使用的協議簇和型別,也就是domain引數未知情況下,這時protocol這個引數就起作用了,它可以確定協議的種類。
socket是乙個函式,那麼它也有返回值,當套接字建立成功時,返回套接字,失敗返回「-1」,錯誤**則寫入「errno」中。
2、繫結ip和埠等資訊到socket上,bind()
3、設定允許的最大連線數,listen()
4、接收客戶端上的請求,accept()
5、收發資料,send() recv()或read() write()
6、關閉網路連線,close()
#define _winsock_deprecated_no_warnings
#include#include#include#pragma comment(lib,"ws2_32.lib")
const int buf_size = 1024;
int main()
1、建立乙個socket,用函式socket()
2、設定要連線的對方的ip位址和埠等屬性
3、連線伺服器,connect()
4、收發資料,send() recv()或read() write()
5、關閉網路連線,close()
#define _winsock_deprecated_no_warnings
#include#include#include#includeusing namespace std;
#pragma comment(lib,"ws2_32.lib")
const int buf_size = 100;
int main()
; recv(sock, infobuff, maxbyte, null);
cout << "從伺服器接受到得資訊為:" << infobuff << endl;
closesocket(sock);
wsacleanup();
system("pause");
return 0;
}
基於tcp的socket通訊
socekt是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它 把複雜的tcp ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議 socket 基於檔案型別的套接字家...
基於TCP協議的socket通訊
一 伺服器端 1 建立serversocket,即伺服器端的socket,繫結指定的埠,並偵聽此埠 serversocket server new serversocket 8888 2 呼叫accept 方法,開始偵聽,等待客戶端的連線,在未連線成功之前,處於阻塞狀態,返回的socket,用於與客...
基於tcp和udp的socket通訊
做個小遊戲的project用到了socket程式設計,於是,就在網上查閱了一下資料,下面簡單總結一下。1.什麼是socket socket是在應用層與傳輸層之間的乙個抽象層,它把tcp ip層複雜的操作抽象為幾個介面 用層的程序實現網路通訊,使得不同主機的相關程序之間交換資料。2.什麼是tcp和ud...