zoukankan      html  css  js  c++  java
  • windows socket编程 server client

    socket

    windows

    //server.cpp
    #include <stdio.h>
    #include <WinSock2.h>
    #define _WINSOCK_DEPRECATED_NO_WARNINGS
    #pragma comment(lib,"ws2_32.lib")
    #define BUF_SIZE 100
    int main()
    {
    	//初始化dll
    	WSADATA wsaData;
    	WSAStartup(MAKEWORD(2, 2), &wsaData);
    	//创建套接字
    	SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    	//绑定套接字
    	sockaddr_in sockAddr;
    	memset(&sockAddr, 0, sizeof(sockAddr));//每个字节都用0填充
    	sockAddr.sin_family = PF_INET;//使用ipv4地址
    	sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");//具体的IP地址 这里是本机地址
    	sockAddr.sin_port = htons(1234);//端口
    	bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
    	//进入监听
    	listen(servSock, 20);
    
    	//接收客户端请求
    	SOCKADDR clntAddr;
    	int nSize = sizeof(SOCKADDR);
    	char buffer[BUF_SIZE];//缓冲区
    	
    	while(1)
    	{
    		SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize);
    		int strLen = recv(clntSock, buffer, BUF_SIZE, 0);//接受客户端信息
    		printf("message received from client:%s
    ", buffer);
    		send(clntSock, buffer, strLen, 0);//原样发回
    		closesocket(clntSock);//关闭本次连接
    		memset(buffer, BUF_SIZE, 0);//重置缓存区
    	}
    	
    
    	//关闭套接字
    	closesocket(servSock);
    	//中止DLL使用
    	WSACleanup();
    
    	return 0;
    
    
    }
    
    //client.cpp
    #include <stdio.h>
    #include <stdlib.h>
    #include <WinSock2.h>
    #pragma comment(lib,"ws2_32.lib")
    //加载ws2_32.dll
    #define BUF_SIZE 100
    int main()
    {
    	//初始化DLL
    	WSADATA wsaData;
    	WSAStartup(MAKEWORD(2, 2), &wsaData);
    
    	
    
    	//向服务器发起请求
    	sockaddr_in sockAddr;
    	memset(&sockAddr, 0, sizeof(sockAddr));//每个字节都用0填充
    	sockAddr.sin_family = PF_INET;//使用ipv4地址
    	sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");//具体的IP地址 这里是本机地址
    	sockAddr.sin_port = htons(1234);//端口
    	char bufSend[BUF_SIZE] = { 0 };//发送缓冲区
    	char bufRecv[BUF_SIZE] = { 0 };//接受缓冲区
    	while (1)
    	{
    		//创建套接字
    		SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    		connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));
    
    
    		printf("input your message:");
    		gets_s(bufSend);
    		send(sock, bufSend, BUF_SIZE, 0);
    		//接受服务器传回的数据
    
    		recv(sock, bufRecv, BUF_SIZE, 0);
    		//输出接收到的数据
    		printf("Message from server:%s
    ", bufRecv);
    		memset(bufSend, 0, BUF_SIZE);
    		memset(bufRecv, 0, BUF_SIZE);
    		closesocket(sock);
    	}
    	
    	WSACleanup();
    	system("pause");
    	return 0;
    }
    

    在socket使用域名

    #include <stdio.h>
    #include <WinSock2.h>
    #pragma comment(lib,"ws2_32.lib")
    
    int main()
    {
    	//加载动态库DLL
    	WSADATA wsaData;
    	WSAStartup(MAKEWORD(2, 2), &wsaData);
    	//域名解析
    	struct hostent* host = gethostbyname("www.baidu.com");
    	if(!host)
    	{
    		puts("Get IP address error!");
    		system("pause");
    		exit(0);
    	}
    	//别名
    	for (int i = 0; host->h_aliases[i]; i++)
    	{
    		printf("Aliases %d:%s
    ", i + 1, host->h_aliases[i]);
    	}
    	//地址类型
    	printf("Address type:%s
    ", (host->h_addrtype==AF_INET)?"AF_INET":"AF_INET6");
    	for (int i = 0; host->h_addr_list[i]; i++)
    	{
    		printf("IP addr %d: %s
    ", i + 1, inet_ntoa(*(struct in_addr*)host->h_addr_list[i]));
    	}
    	system("pause");
    	return 0;
    }
    

    hello
  • 相关阅读:
    《如何快速阅读一本书》读书笔记总结(实测,对提升阅读速度和质量非常有用)---2020年的第8/100本 (一目十行读书训练法)
    穷查理宝典 读书笔记--2020年的第1/100本
    200个查理芒格思维模型---多元思维模型
    lintcode算法周竞赛
    2016 Google code jam 大赛
    程序员面试心得总结
    (lintcode全部题目解答之)(附容易犯的错误)
    模板
    《非连续性》 混沌大学商学院第3章 读书笔记总结--2020年的第19/100本
    《第二曲线》 混沌大学商学院第2章 读书笔记总结--2020年的第18/100本
  • 原文地址:https://www.cnblogs.com/picksan/p/13492852.html
Copyright © 2011-2022 走看看