您的位置:首页 > 理论基础 > 计算机网络

简单TCP服务器端和客户端(源代码)

2012-05-17 17:34 295 查看
http://andylin02.iteye.com/blog/460742


简单TCP服务器端和客户端(源代码)

博客分类:

一亩三分地

SocketWindows

Cpp代码



//客户端:

Cpp代码



#include <iostream>

#include <stdio.h>

#include <windows.h>



using namespace std;



#pragma comment(lib, "WS2_32.lib")





int main()

{

WSADATA wsaData;

WORD sockVersion = MAKEWORD(2, 2);

SOCKET sock = 0;



if (WSAStartup(sockVersion, &wsaData) != 0)

{

cout << "initlization failed!" << endl;

exit(0);

}



sock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);



if (sock == INVALID_SOCKET)

{

cout << "failed socket!" << endl;



return 0;

}



sockaddr_in sin;



sin.sin_family = AF_INET;

sin.sin_port = htons(4567);

sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");



if (connect(sock, (sockaddr*)&sin, sizeof(sockaddr)) == -1)

{

cout << "connect failed!" << endl;



return 0;

}



char buffer[256] = "\0";

int nRecv = 0;



nRecv = recv(sock, buffer, 256, 0);



if (nRecv > 0)

{

buffer[nRecv] = '\0';



cout << "reveive data: " << buffer << endl;

}



closesocket(sock);



WSACleanup();

}



//服务端:



#include <iostream>

#include <stdio.h>

#include <windows.h>



using namespace std;



#pragma comment(lib, "WS2_32.lib")





int main()

{

WSADATA wsaData;

WORD sockVersion = MAKEWORD(2, 2);

SOCKET sListen = 0;

sockaddr_in sin = {0};

sockaddr_in remoteAddr = {0};

char szText[] = "TCP Server Demo";

int nAddrLen = 0;



nAddrLen = sizeof(sockaddr_in);

//fill sin

sin.sin_port = htons(4567);

sin.sin_family = AF_INET;

sin.sin_addr.S_un.S_addr = INADDR_ANY;



//init wsa

if (WSAStartup(sockVersion, &wsaData) != 0)

{

cout << "initlization failed!" << endl;



exit(0);

}



sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);



if (bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)

{

cout << "bind failed!" << endl;



return 0;

}



if (listen(sListen, 2) == SOCKET_ERROR)

{

cout << "listen failed!" << endl;



return 0;

}



SOCKET sClient = INADDR_ANY;



while (true)

{

sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);



if (sClient == INVALID_SOCKET)

{

cout << "accept failed!" << endl;



continue;

}



send(sClient, szText, strlen(szText), 0);



closesocket(sClient);



}



closesocket(sListen);



WSACleanup();

}





Cpp代码



//服务端:

Cpp代码



#include <iostream>

#include <stdio.h>

#include <windows.h>



using namespace std;



#pragma comment(lib, "WS2_32.lib")





int main()

{

WSADATA wsaData;

WORD sockVersion = MAKEWORD(2, 2);

SOCKET sListen = 0;

sockaddr_in sin = {0};

sockaddr_in remoteAddr = {0};

char szText[] = "TCP Server Demo";

int nAddrLen = 0;



nAddrLen = sizeof(sockaddr_in);

//fill sin

sin.sin_port = htons(4567);

sin.sin_family = AF_INET;

sin.sin_addr.S_un.S_addr = INADDR_ANY;



//init wsa

if (WSAStartup(sockVersion, &wsaData) != 0)

{

cout << "initlization failed!" << endl;



exit(0);

}



sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);



if (bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)

{

cout << "bind failed!" << endl;



return 0;

}



if (listen(sListen, 2) == SOCKET_ERROR)

{

cout << "listen failed!" << endl;



return 0;

}



SOCKET sClient = INADDR_ANY;



while (true)

{

sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);



if (sClient == INVALID_SOCKET)

{

cout << "accept failed!" << endl;



continue;

}



send(sClient, szText, strlen(szText), 0);



closesocket(sClient);



}



closesocket(sListen);



WSACleanup();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: