简单的客户端和服务器流程

服务器:

// link with Ws2_32.lib
#pragma comment(lib,"Ws2_32.lib")

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>   // Needed for _wtoi

int __cdecl wmain(int argc, wchar_t **argv)
{
	system("title 服务器");
	// Declare and initialize variables
	WSADATA wsaData = {0};
	int iResult = 0;

	iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
	if (iResult != 0) 
	{
		wprintf(L"WSAStartup failed: %d\n", iResult);
		return 1;
	}

	SOCKET sock = socket(AF_INET, SOCK_STREAM ,0);
	if (sock == INVALID_SOCKET) 
	{
		wprintf(L"socket function failed with error = %d\n", WSAGetLastError() );
		iResult = closesocket(sock);
		if (iResult == SOCKET_ERROR) 
		{
			wprintf(L"closesocket failed with error = %d\n", WSAGetLastError() );
			WSACleanup();
			return 1;
		}
	}
	sockaddr_in  aSerAddr;
	aSerAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	aSerAddr.sin_family = AF_INET;
	aSerAddr.sin_port = htons(1989);
	int iRetBind = bind(sock,(sockaddr*)&aSerAddr,sizeof(sockaddr_in));
	int iRetLs = listen(sock,10);
	
	sockaddr_in  aClientAddr;
	int iLen= sizeof(sockaddr_in);
	SOCKET sockClient = INVALID_SOCKET;
	while(1)
	{
		sockClient = accept(sock,(sockaddr*)&aClientAddr,&iLen);
	
		if(sockClient!=INVALID_SOCKET)
		{
			printf("%s连接到服务器!\n",inet_ntoa(aClientAddr.sin_addr));
			send(sockClient,"连接成功",strlen("连接成功"),0);
			char buffer[100]={0};
			recv(sockClient,buffer,100,0);
			printf("客户端:%s",buffer);
		}
	}

	return 0;
}


客户端:

// link with Ws2_32.lib
#pragma comment(lib,"Ws2_32.lib")

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>   // Needed for _wtoi

int  main(int argc, wchar_t **argv)
{
    system("title 客户端");
    // Declare and initialize variables
    WSADATA wsaData = {0};
    int iResult = 0;

    iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != 0) 
    {
        wprintf(L"WSAStartup failed: %d\n", iResult);
        return 1;
    }

    SOCKET sock = socket(AF_INET, SOCK_STREAM ,0);
    if (sock == INVALID_SOCKET) 
    {
        wprintf(L"socket function failed with error = %d\n", WSAGetLastError() );
        iResult = closesocket(sock);
        if (iResult == SOCKET_ERROR) 
        {
            wprintf(L"closesocket failed with error = %d\n", WSAGetLastError() );
            WSACleanup();
            return 1;
        }
    }
    sockaddr_in  aSerAddr;
    aSerAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    aSerAddr.sin_family = AF_INET;
    aSerAddr.sin_port = htons(1989);

    int iRet = connect(sock,(sockaddr*)&aSerAddr,sizeof(sockaddr_in));
    if(iRet<0)
    {
        printf("连接出错\n");
    }
    char buffer[100]={0};
    recv(sock,buffer,100,0);
    printf("服务器:%s",buffer);
    send(sock,"我是客户端!",sizeof("我是客户端!"),0);

    
    getchar();
    

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值