#pragma comment(lib, \
class CClientNet {
public: //连接上指定服务器 int Connect(int port,const char* address); //发送信息 //int SendMsg(const char* msg,int len); void SendMsg(); //关闭 void Close();
private: SOCKET m_sock; };
int CClientNet::Connect( int port,const char* address ) { int rlt = 0; //用于记录错误信息并输出 int iErrMsg; //启动WinSock WSAData wsaData; iErrMsg = WSAStartup(MAKEWORD(1,1),&wsaData); if (iErrMsg != NO_ERROR) { printf(\ rlt = 1; return rlt; } //创建Socket m_sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (m_sock == INVALID_SOCKET) //创建Socket失败 { printf(\
iii
rlt = 2; return rlt; } //目标服务器数据 sockaddr_in sockaddrServer; sockaddrServer.sin_family = AF_INET; sockaddrServer.sin_port = port;//端口号 sockaddrServer.sin_addr.s_addr = inet_addr(address);//将一个点分十进制的IP转换成一个长整数型数 //连接,sock与目标服务器连接 iErrMsg = connect(m_sock,(sockaddr*)&sockaddrServer,sizeof(sockaddrServer)); if (iErrMsg < 0) { printf(\ rlt = 3; return rlt; } return rlt; }
void CClientNet::SendMsg() { char a[50]; char b[50]; char c[50]; printf(\ gets(b); send(m_sock,b,sizeof(b),0); char recvBuf[50]; recv(m_sock,recvBuf,50,0); printf(\ gets(c); send(m_sock,c,sizeof(c),0); recv(m_sock,recvBuf,50,0); printf(\ while(1) {
iv
gets(a); if(strcmp(a,\ { send(m_sock,a,sizeof(a),0); break; } else { send(m_sock,a,sizeof(a),0); char recvBuf[50]; recv(m_sock,recvBuf,50,0); printf(\ } } }
void CClientNet::Close() { closesocket(m_sock); }
void main() { CClientNet client; //连接到127.0.0.1(即本地),端口号为8888的服务端 printf(\ client.Connect(8888,\ //发送消息 client.SendMsg(); //关闭socket printf(\ client.Close(); system(\}
②. Server端 #pragma once
v
#include
#pragma comment (lib,\
class CServerNet {
public: //初始化服务器,返回0表示成功 int Init(const char* address,int port); //更新数据 void Run();
private: SOCKET m_sock; };
int CServerNet::Init( const char* address,int port ) { int rlt = 0; //用于记录错误信息,并输出 int iErrorMsg; //初始化WinSock WSAData wsaData; iErrorMsg = WSAStartup(MAKEWORD(1,1),&wsaData); if (iErrorMsg != NO_ERROR) { //初始化WinSock失败 printf(\ rlt = 1; return rlt; } //创建服务端Socket m_sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
vi
if (m_sock == INVALID_SOCKET) { //创建Socket异常 printf(\ rlt = 2; return rlt; } //声明信息 sockaddr_in serverAddr; serverAddr.sin_family = AF_INET; serverAddr.sin_port = port; serverAddr.sin_addr.s_addr = inet_addr(address); //绑定 iErrorMsg = bind(m_sock,(sockaddr*)&serverAddr,sizeof(serverAddr)); if (iErrorMsg < 0) { //绑定失败 printf(\ rlt = 3; return rlt; } return rlt; }
void CServerNet::Run() { //公开连接 listen(m_sock,5); sockaddr_in tcpAddr; int len = sizeof(sockaddr); SOCKET newSocket; char buf[1024]; int rval; char acc[]=\
vii