服務端程式的編寫
1. 建立套接字(socket)
2. 將套接字繫結到乙個本地位址和埠上.(bind)
3. 將套接字設為監聽模式,準備接收客戶請求(listen).
4. 等待客戶請求到來,當請求到來後,接收連線請求,返回乙個新的對應於此次連線的套接字(accept).
5. 用返回的套接字和客戶端進行通訊(send/recv)
6. 返回等待另乙個客戶請求.
7. 關閉套接字
如下是服務端程式的**:
#include "windows.h"
#include "winsock.h"
#include "stdio.h"
#pragma comment(lib,"ws2_32.lib")
void main()
if ( lobyte( wsadata.wversion ) != 2 || hibyte( wsadata.wversion ) != 2 )
//建立套接字
socket socksrv = socket(af_inet,sock_stream,0);
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr=inaddr_any;
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
//將套接字繫結到乙個本地位址和埠上
bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));
listen(socksrv,5);
sockaddr_in addrclient;
int len=sizeof(sockaddr);
while(1) }
客戶端程式的編寫
1、 建立套接字(socket)。
2、 向伺服器發出連線請求(connect)。
3、 和伺服器進行通訊(send/recv)。
4、 關閉套接字。
如下是客戶端程式的原始碼:
#include "winsock2.h"
#include "windows.h"
#include "stdio.h"
#pragma comment(lib,"ws2_32.lib")
void main()
if ( lobyte( wsadata.wversion ) != 2 || hibyte( wsadata.wversion ) != 2 )
//建立套接字
socket sockclient=socket(af_inet,sock_stream,0);
//連線服務端
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons(6000);
connect(sockclient,(sockaddr*)&addrsrv,sizeof(sockaddr));
//接收資料
char recvbuf[100];
recv(sockclient,recvbuf,100,0);
printf("%s/n",recvbuf);
//客戶端傳送資料
send(sockclient,"test!",strlen("test!")+1,0);
closesocket(sockclient);
}
vc網路程式設計入門
對於許多初學者來說,網路通訊程式的開發,普遍的乙個現象就是覺得難以入手。許多概念,諸如 同步 sync 非同步 async 阻塞 block 非阻塞 unblock 等,初學者往往迷惑不清,只知其所以而不知起所以然。同步方式指的是傳送方不等接收方響應,便接著發下個資料報的通訊方式 而非同步指傳送方發...
VC 網路程式設計基礎
osi七層網路模型 物理硬體層 表示計算機網路中的物理裝置,常見的有計算機網絡卡等 資料鏈路層 將傳輸資料進行壓縮與解壓縮 網路層 將傳輸資料進行網路傳輸 資料傳輸層 進行資訊的網路傳輸 會話層 建立物理網路的連線 表示層 將傳輸資料以某種格式進行表示 應用層 應用程式介面 tcp ip實際上是乙個...
VC 網路程式設計 WINSOCK I O模型
window 下的套接字以來兩種方式執行i o操作,阻塞io 非阻塞io,一般預設使用的是阻塞io 即執行緒會等待不會把控制權利立刻返回給程式,這就意為乙個執行緒在某乙個時候只能夠去執行乙個io操作。如果服務端想和多個客戶端同時進行通訊的話就要使用多執行緒程式設計,但是會增加開銷,如果採用非阻塞io...