由於**的注釋已經很詳盡了,所以這裡不再作過多說明.
僅僅貼出**和結果圖.
值得注意的是必須先啟動server程式再啟動client.
server:
#include //套接字型檔
#include #define port 6000 //伺服器端口
#define msgsize 1024 //收發緩衝區的大小
#pragma comment(lib, "ws2_32.lib") //鏈結靜態庫
dword winapi funthread(lpvoid); //建立乙個執行緒,專門用來接收資料
socket sclient; //連線所用套節字
socket slisten; //監聽套接字
sockaddr_in client; //儲存客戶的位址資訊
int iaddrsize = sizeof(sockaddr_in);
int main()
return 0;
} //當接收資料時呼叫此執行緒函式
dword winapi funthread(lpvoid)
c_message[ret] = '\0';
printf("\nreceived: %s\n", c_message);
} return 0;
}
client:
#include //套接字型檔
#include #define server_address "127.0.0.1" //伺服器端ip位址,由於服務也在本地機器上所以用環迴位址127.0.0.1
#define port 6000 //客戶端繫結埠
#define msgsize 1024 //客戶端接收資料緩衝區大小
#pragma comment(lib, "ws2_32.lib")
dword winapi funthread(lpvoid); //對於客戶端接收資料的執行緒函式
socket sclient; //客戶端套接字
sockaddr_in server; //伺服器端套接字
int main()
// 釋放連線和進行結束工作
closesocket(sclient);
wsacleanup();
return 0;
}//接收執行緒函式
dword winapi funthread(lpvoid)
s_message[ret] = '\0';
//顯示接收資料
printf("\nreceived: %s\n", s_message);
//如果伺服器端傳送exit則client退出
if(!strcmp(s_message,"exit"))//server讓client退出
exit(1);
} return 0;
}
執行結果如下:
後面的文章我將會介紹套接字的基礎以及**中涉及的createthread.
**中難免bug,望讀者批評指正.
基於tcp協議的套接字
簡單版本 一 服務端 import socket 1 買手機 拿到套接字物件,用來鏈結建立鏈結 phone socket.socket socket.af inet,socket.sock stream tcp稱為流式協議sock stream,udp稱為資料報協議sock dgram print ...
基於tcp的套接字程式設計
伺服器端 1 author kelvin2 date 2019 1 28 22 10 3from socket import 4 server socket.socket af inet,sock stream 5 server.setsockopt sol socket,so reuseaddr,...
基於TCP協議的套接字程式設計
socket是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它把複雜的tcp ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。socket模板已經為我們封裝好了,我...