TCP ECHO
服务器端
// server.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#pragma comment(lib,"ws2_32.lib")
#include
#include
#include
#include
int _tmain(int argc, _TCHAR* argv[])
{WSAData wsaData;
int err = WSAStartup(WINSOCK_VERSION,&wsaData);
if(0!=err)
{return -1;}
SOCKET sock= socket(AF_INET, SOCK_STREAM, 0);
if(INVALID_SOCKET==sock) {
printf("socket() Failed: %d\n",WSAGetLastError());
WSACleanup();return -1;}
sockaddr_in LocaAddr;
LocaAddr.sin_family = AF_INET;
LocaAddr.sin_port=htons(10000);
LocaAddr.sin_addr.s_addr=htonl(INADDR_ANY);
err = bind(sock, (sockaddr *)&LocaAddr, sizeof(LocaAddr));
if(SOCKET_ERROR==err) {
printf("bind() Failed: %d\n",WSAGetLastError());
closesocket(sock);WSACleanup();return -1;}
err=listen(sock,5);
if(SOCKET_ERROR==err)
{printf("listen() Failed:%d\n", WSAGetLastError());
closesocket(sock);WSACleanup();return -1;}
sockaddr_in ClientAddr;
int AddrLen =sizeof(ClientAddr);
SOCKET sockConnected=accept(sock,(sockaddr*)
&ClientAddr,&AddrLen);
if(INVALID_SOCKET==sockConnected)
{printf("accpet() Failed:%d\n", WSAGetLastError());
closesocket(sock);WSACleanup();return -1;}
char rbuf[1024];
while(1)
{memset(rbuf,0,1024);
int rByte = recv(sockConnected,rbuf,1024,0);
if(SOCKET_ERROR==rByte) /*出错处理*/
{printf("recv Failed: %d\n",WSAGetLastError());
closesocket(sockConnected);break;}
if(0==rByte)
{printf("Connection is closed.\n"); shutdown
(sockConnected,SD_SEND); closesocket
(sockConnected);break;}
printf("TCP recv [%d]DATA:%s\n",rByte,rbuf);
int sByte=send(sockConnected,rbuf,rByte,0);
if(INVALID_SOCKET==sByte)
{ printf("send() Failed:%d\n", WSAGetLastError());
closesocket(sockConnected);break;}}
closesocket(sock);WSACleanup();return 0;}
客户端
// SOCKET.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#pragma comment(lib,"ws2_32.lib")
#include
#include
#include
#include
int _tmain(int argc, _TCHAR* argv[])
{WSAData wsaData;
int err = WSAStartup(WINSOCK_VERSION,&wsaData);
if(0!=err){return -1;}
SOCKET sock;
sock = socket(AF_INET, SOCK_STREAM, 0);
if(INVALID_SOCKET==sock) //出错处理
{printf("socket() Failed: %d\n",WSAGetLastError());
WSACleanup();return -1;}
sockaddr_in ServerAddr;
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(10000);
ServerAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
err = connect(sock, (sockaddr *)&ServerAddr, sizeof
(ServerAddr));
if(SOCKET_ERROR==err)
{printf("connect() Failed: %d\n",WSAGetLastError());
closesocket(sock);WSACleanup();return -1;}
char data[]="Hello World!";
int sByte=send(sock,data,strlen(data),0);
if(SOCKET_ERROR==sByte)
{printf("send() Failed: %d\n",WSAGetLastError());
closesocket(sock);WSACleanup();return -1;}
printf("TCP send [%d]DATA:%s\n",sByte,data);
char rbuf[1024];
while(1)
{memset(rbuf,0,1024);
int rByte = recv(sock,rbuf,1024,0);
if(SOCKET_ERROR==rByte)
{printf("recv Failed: %d\n",WSAGetLastError());
closesocket(sock);WSACleanup();return -1;}
if(0==rByte) //对方关闭了连接
{printf("Connection is closed.\n");break;}
printf("TCP recv [%d]DATA:%s\n",rByte,rbuf);}
closesocket(sock);WSACleanup();return 0;}
本文档为【TCP协议代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。