/*----------------------------------------------------------------------
/+++Theme :a network sample programmingbaseed on TCP
/+++Author:Standy Huang
/+++CreateTime:Oct/28/2006
/+++CopyrightFrom:<VC++深入详解>++By Sun Xin.etc
//
----------------------------------------------------------------------*/
//please add the <Ws2_32>to both server and client or else it will generate link error
//Server:
// TCP_servertest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <winsock2.h>
#include <stdio.h>
int main()
{
//load socket library
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested, &wsaData);
if(err!=0)
return -1;
if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return -1;
}
// Create the socket for listen
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 the socket to the server
bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
//wait for a certain client visiting
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf (sendBuf, "Welcome%s here", inet_ntoa(addrClient.sin_addr));
//send data to client
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
//receive data from client
recv(sockConn,recvBuf,100, 0);
printf("%s/n",recvBuf);
//shutdown the socket
closesocket(sockConn);
}
return 1;
}
//end of server
//Client
// TCP_Clienttest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <winsock2.h>
#include <stdio.h>
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested, &wsaData);
if(err!=0)
return -1;
if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return -1;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.1.117");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
int status=connect (sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
if(status!=0)
{
printf("the socket cannot connect/n");
return 0;
}
else
{
char recvBuf[256];
recv(sockClient,recvBuf,256,0);
printf("%s/n",recvBuf);
send(sockClient,"This is HighLandear",strlen("This is HighLandear")+1,0);
closesocket(sockClient);
WSACleanup();
return 1;
}
}
//end of client
本文提供了一个基于TCP的服务器和客户端编程示例,使用Winsock库实现。服务器监听6000端口并响应客户端连接请求,发送欢迎消息并接收客户端数据。客户端则连接到指定IP地址的服务器,并接收服务器消息后回应。

10万+

被折叠的 条评论
为什么被折叠?



