基于TCP的Sockets编程

TCP服务器:

// TCP服务器.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <WinSock2.h>
#include <windows.h>

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

int _tmain(int argc, _TCHAR* argv[])
{
	WSADATA data;   
	WORD w = MAKEWORD(2, 0);                            //定义版本号码
	char sztext[] = "welcome yuippe\r\n";
	::WSAStartup(w, &data);                            //初始化套接字库
	SOCKET s, s1;                                     //定义连接套接字和数据收发套接字句柄
	s = ::socket(AF_INET, SOCK_STREAM, 0);            //创建TCP套接字
	sockaddr_in addr, addr2;                          //定义套接字地址结构
	int n = sizeof(addr2);                           //获取套接字地址结构大小
	addr.sin_family = AF_INET;                       //初始化地址结构
	addr.sin_port = htons(75);
	addr.sin_addr.S_un.S_addr = INADDR_ANY;
	::bind(s, (sockaddr*)&addr, sizeof(addr));
	::listen(s, 5);
	printf("服务器已经启动\r\n");

	while (true)
	{
		s1 = ::accept(s, (sockaddr*)&addr2, &n);
		if( s1!= NULL )
		{
			printf("%s已经连接上\r\n", inet_ntoa(addr2.sin_addr));
			::send(s1, sztext, sizeof(sztext), 0);           //向客户端发送字符数组
		}
		::closesocket(s);
		::closesocket(s1);
		::WSACleanup();                                      //释放套接字库

		if (getchar())
		{
			return 0;
		}
		else
		{
			::Sleep(100);
		}

	}

	return 0;
}

客户端:

// TCP客户端.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <WinSock2.h>


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

int _tmain(int argc, _TCHAR* argv[])
{

	WSADATA data;
	WORD w = MAKEWORD(2, 0);
	::WSAStartup(w, &data);
	SOCKET s;
	char sztext[100] = {0};
	s = ::socket(AF_INET, SOCK_STREAM, 0);
	sockaddr_in addr;
	addr.sin_family = AF_INET;
	addr.sin_port = htons(75);
	addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	printf("客户端已经启动\r\n");
	::connect(s, (sockaddr*)&addr, sizeof(addr));
	::recv(s, sztext, sizeof(sztext), 0);

	printf("%s\r\n", sztext);
	::closesocket(s);
	::WSACleanup();
	if (getchar())
	{
		return 0;
	}
	else
	{
		::Sleep(100);
	}

	return 0;
}

基于TCP的Sockets编程_第1张图片

你可能感兴趣的:(基于TCP的Sockets编程)