載入winsock庫,繫結ws2_32.lib動態鏈結庫
建立socket套接字
將套接字繫結(bind)到指定的本機ip位址和埠上
將套接字設為監聽模式(listen),準備接受客戶端的請求
等待客戶端請求的到來(accept),並返回新的套接字進行通訊
伺服器和客戶端相互通訊(send/recv)
返回繼續等待新的客戶端請求到來
關閉socket套接字
伺服器要繫結埠,監聽客戶端請求,當接受到請求後才開始通訊載入winsock庫,繫結ws2_32.lib動態鏈結庫
建立socket套接字
向伺服器傳送連線請求(connect)
伺服器和客戶端相互通訊(send/recv)
關閉socket套接字
客戶端只需要先傳送請求,只要請求被接收後就可以通訊了。
//基於tcp的伺服器應用程式
#include #include #include #pragma comment(lib, "wsock32.lib")
#pragma warning(disable:4996)
void main()
if (lobyte(wsadata.wversion) != 1 ||
hibyte(wsadata.wversion) != 1)
//建立socket套接字
socket socksrv = socket(af_inet, sock_stream, 0);
//bind:將建立的套接字繫結在本地位址和埠號上
sockaddr_in addrsrv;
addrsrv.sin_addr.s_un.s_addr = htonl(inaddr_any);
addrsrv.sin_family = af_inet;
addrsrv.sin_port = htons(6000);
bind(socksrv, (const sockaddr *)&addrsrv, sizeof(sockaddr));
//將套接字設定為監聽模式
listen(socksrv, 5);
//接受客戶端請求
//接受客戶端訊息和向客戶端傳送訊息
//返回等待
//關閉套接字
sockaddr_in addrclient;
int len = sizeof(sockaddr);
while (1)
system("pause");
}
//基於tcp的客戶端應用程式
#pragma warning(disable:4996)
#include #include #include #pragma comment(lib, "wsock32.lib")
void main()
if (lobyte(wsadata.wversion) != 1 ||
hibyte(wsadata.wversion) != 1)
//建立winsock套接字
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, (const sockaddr*)&addrsrv, sizeof(sockaddr));
//客戶端和伺服器相互通訊
char recvbuf[100];
recv(sockclient, recvbuf, strlen(recvbuf) + 1, 0);
printf("%s", recvbuf);
send(sockclient, "my name is younghd client", strlen("my name is younghd client") + 1, 0);
closesocket(sockclient);
wsacleanup();
system("pause");
}
先執行伺服器在執行客戶機
嚴重性**說明專案檔案行 禁止顯示狀態錯誤 c4996 fopen(『fscanf』、strcmp):this function or variable may be unsafe.1.在程式最前面加
#define _crt_secure_no_deprecate;
2. 在程式最前面加#pragma warning(disable:4996);
3. 在程式最前面加#define _crt_secure_no_warnings;
4. 在新建專案時取消勾選「sdl檢查」即可;
5. 在 專案屬性 – c/c++ – 命令列 新增:/d _crt_secure_no_warnings
基於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...
基於TCP 的網路程式設計步驟
基於tcp 伺服器端 1.建立乙個socket,用函式socket 2.繫結ip位址 埠等資訊到socket上,用函式bind 3.設定允許的最大連線數,用函式listen 4.等待來自客戶端的連線請求,用函式accept 5.收發資料,用函式send 和recv 或者read 和write 6.關...
Java網路程式設計 基於TCP協議的網路程式設計(三)
增加聊天室功能 1.可以看到是誰發的訊息。2.實現私聊功能。實現方法 對於第乙個功能,可以使用map集合來儲存使用者資訊 第二個功能可以在客戶端傳送不同訊息時,對這些訊息進行處理,比如在訊息內容前後新增一些特殊字元,通過這些特殊字元來判斷。實現 特殊字元類 public inte ce chatro...