• 网络编程(windows socket编程)


    TCP服务器端代码:

     1 // TcpSrv.cpp: 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include<Windows.h>
     6 #pragma comment(lib,"ws2_32.lib") 
     7 
     8 int main()
     9 {
    10     //************加载套接字库*****************
    11     WORD wVersionRequested;
    12     WSADATA wsaData;
    13     int err;
    14 
    15     wVersionRequested = MAKEWORD(2,2);//Winsock库版本,低字节代表主版本,高字节代表副版本
    16     err = WSAStartup(wVersionRequested, &wsaData);
    17     if (err != 0)
    18     {
    19         return false;
    20     }
    21     if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
    22     {
    23         WSACleanup();//终止对winsock库的使用
    24         return false;
    25     }
    26 
    27     //***********创建套接字********************
    28 
    29     //parameter int af:指定协议族,即网际域,Windows平台总是AF_INET或TF_INET
    30     //parameter int type:套接字类型
    31     //parameter int protocal:协议类型,一般设为0,自动设置
    32     SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0);
    33 
    34     //************绑定到本机地址和端口***********
    35     SOCKADDR_IN addrSrv;//本机地址结构体信息,除了sin_family,其它字段都需要采用网络字节序
    36     addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//htonl转换为网络字节序,转换的是u_long类型
    37     addrSrv.sin_family = AF_INET;
    38     addrSrv.sin_port = htons(6000);//htons转换为网络字节序,转换的是u_short类型
    39 
    40     //绑定,由于第二个参数会随网络协议的不同而变化,所以第三个参数指定地址结构的长度
    41     bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(addrSrv));
    42 
    43     //*************监听************************
    44     listen(sockSrv,5);//5表示连接队列
    45 
    46     while (1)
    47     {
    48         SOCKADDR_IN addrClient;//用于接收客户端的地址信息
    49         int len = sizeof(SOCKADDR);//这个参数必须初始化
    50 
    51         //*************建立连接************************
    52         //接受客户端的连接,返回一个新的套接字。之前的套接字sockSrv依然用于监听
    53         SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);
    54 
    55         //*************发送数据************************
    56         char sendBuf[100];
    57         //inet_ntoa表示将网络用的ip地址转换为点分十进制的形式,并返回成字符串  
    58         //inet_addr将点分十进制地址转换为一个无符号整形表示形式
    59         sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
    60 
    61         send(sockConn, sendBuf, strlen(sendBuf) + 1,0);
    62 
    63         //*************接收数据************************
    64         char recvBuf[100];
    65         recv(sockConn,recvBuf,100,0);
    66         printf("%s",recvBuf);
    67 
    68         //*************关闭套接字**********************
    69         closesocket(sockConn);
    70     }
    71     // 退出while循环后,关闭sockSrv以及清理套接字即可
    72 
    73     return 0;
    74 }
    View Code

    TCP客户端端代码:

     1 // TcpClient.cpp: 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include<Winsock2.h>
     6 #pragma comment(lib,"ws2_32.lib") 
     7 int main()
     8 {
     9     //************加载套接字库*****************
    10     WORD wVersionRequested;
    11     WSADATA wsaData;
    12     int err;
    13     wVersionRequested = MAKEWORD(2,2);
    14     err = WSAStartup(wVersionRequested,&wsaData);
    15     if (err != 0)
    16     {
    17         return false;
    18     }
    19     if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
    20     {
    21         WSACleanup();
    22         return false;
    23     }
    24 
    25     //***********创建套接字********************
    26     SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0);
    27 
    28     //************连接服务器*******************
    29     SOCKADDR_IN addrSrv;
    30     addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    31     addrSrv.sin_family = AF_INET;
    32     addrSrv.sin_port = htons(6000);
    33     connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
    34 
    35     //************接收数据*********************
    36     char recvBuf[100];
    37     recv(sockClient,recvBuf,100,0);
    38     printf("%s
    ",recvBuf);
    39     //************发送数据*********************
    40     send(sockClient,"This is Client",strlen("This is Client")+1,0);
    41 
    42     closesocket(sockClient);//关闭套接字  
    43     WSACleanup();//终止套接字库的使用
    44 
    45     system("pause");
    46     return 0;
    47 }
    View Code

     UDP服务端代码:

     1 // udpSrv.cpp: 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include<WinSock2.h>
     6 #pragma comment(lib, "ws2_32.lib")
     7 int main()
     8 {
     9     //*************加载套接字库***************
    10     WORD wVersionRequested;
    11     WSADATA wsaData;
    12     int err;
    13 
    14     wVersionRequested = MAKEWORD(2, 2);
    15     err = WSAStartup(wVersionRequested,&wsaData);
    16 
    17     if (err != 0)
    18     {
    19         return false;
    20     }
    21     if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
    22     {
    23         return false;
    24         WSACleanup();
    25     }
    26 
    27     //*************创建套接字***************
    28     SOCKET sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    29 
    30     //*************绑定到地址结构上***************
    31     SOCKADDR_IN addrSrv;
    32     addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    33     addrSrv.sin_family = AF_INET;
    34     addrSrv.sin_port = htons(6000);
    35 
    36     bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(addrSrv));
    37 
    38     //*************接收********************
    39     SOCKADDR_IN addrClient;
    40     int len = sizeof(SOCKADDR);
    41     char recvBuf[100];
    42     recvfrom(sockSrv, recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
    43     printf("%s
    ", recvBuf);
    44 
    45     //*************关闭套接字***************
    46     closesocket(sockSrv);
    47     WSACleanup();
    48 
    49     system("pause");
    50     return 0;
    51 }
    View Code

     UDP客户端代码:

     1 // udpClient.cpp: 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include<WinSock2.h>
     6 #pragma comment(lib, "ws2_32.lib")
     7 
     8 int main()
     9 {
    10     //*************加载套接字库***************
    11     WORD wVersionRequested;
    12     WSADATA wsaData;
    13     int err;
    14 
    15     wVersionRequested = MAKEWORD(2, 2);
    16     err = WSAStartup(wVersionRequested, &wsaData);
    17 
    18     if (err != 0)
    19     {
    20         return false;
    21     }
    22     if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
    23     {
    24         return false;
    25         WSACleanup();
    26     }
    27     //****************创建套接字***********************
    28     SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0);
    29 
    30     //****************发送数据***********************
    31     SOCKADDR_IN addrSrv;
    32     addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    33     addrSrv.sin_family = AF_INET;
    34     addrSrv.sin_port = htons(6000);
    35     int len = sizeof(SOCKADDR);
    36 
    37     sendto(sockClient,"hello",sizeof("hello")+1,0,(SOCKADDR*)&addrSrv,len);
    38 
    39     //****************关闭套接字***********************
    40     closesocket(sockClient);
    41     WSACleanup();
    42 
    43     system("pause");
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    就是能打开网站的首页,但不能打开二级链接的解决办法
    .NET学习笔记:文件和注册表操作
    小猪今天生病了,要打针了
    Android基础教程——在TextView中显示Html 自定义标签,获取标签属性
    所谓周末,就是在家好好做饭、好好睡觉、好好玩游戏
    我开通了个人博客
    《和空姐一起的日子》中顾太太新买的电脑
    iPhone & iPad apps with special url shortcuts
    iPhone开发错误集
    瞧瞧包拯,狄仁杰,宋慈的团队
  • 原文地址:https://www.cnblogs.com/cainiao-xf/p/8213974.html
Copyright © 2020-2023  润新知