基於TCP的網路通訊程式演示 命令列程式

2021-04-24 11:25:43 字數 1576 閱讀 2266

本程式僅僅是為了演示基於tcp協議的網路通訊程式的寫法,採用阻塞模式,**簡單:

伺服器端**:

#include "winsock2.h"

#include "stdio.h"

void main()

if ( lobyte( wsadata.wversion ) != 1 ||

hibyte( wsadata.wversion ) != 1 )

socket socksrv=socket(af_inet,sock_stream,0);

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,(sockaddr*)&addrsrv,sizeof(sockaddr));

listen(socksrv,5);

sockaddr_in addrclient;

int len=sizeof(sockaddr);

while(1)

}

『注意』本程式使用了動態連線庫檔案ws2_32.lib,需要在工程屬性裡新增對ws2_32.lib的連線。本程式用vc2005編譯,新增方法是:在project/configuration properties/linker/input下的additional dependencies 項裡寫如ws2_32.lib

客戶端**:

#include "winsock2.h"

#include "stdio.h"

void main()

if ( lobyte( wsadata.wversion ) != 1 ||

hibyte( wsadata.wversion ) != 1 )

socket sockclient=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1"); //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,strlen(recvbuf),0);

printf("%s/n",recvbuf);

send(sockclient,"我是胡林",strlen("我是胡林")+1,0);

closesocket(sockclient);

wsacleanup();

}

同伺服器端一樣,客戶端程式也使用了ws2_32.lib動態連線庫,需要在工程屬性裡新增對ws2_32.lib的連線。

基於UDP的網路通訊程式

我們知道tcp ip協議是至今發展最為成功的協議之一,也是整個網際網路的基礎。它在傳輸層有兩個不同的協議 tcp和udp,用途都很廣泛,下面我就udp做乙個示例程式。整個例子有兩個程式組成,乙個傳送資料,另乙個程式接收資料後,完成繪圖工作。本文程式執行效果圖如下 一 傳送程式 首先建立資料傳送程式 ...

網路通訊,基於TCP協議,C ,實現

tcp協議是乙個基本的網路協議,基本上所有的網路服務都是基於tcp協議的,如http,ftp 等等,所以要了解網路程式設計就必須了解基於tcp協議的程式設計。然而tcp協議是乙個龐雜的體系,要 徹底的弄清楚它的實現不是一天兩天的功夫,所幸的是在.net framework環境下,我們不必要去 部分 ...

遊戲網路通訊方式基於TCP

server include stdafx.h include stdio.h include stdlib.h include windows.h include winsock.h include string.h pragma comment lib,ws2 32.lib define por...