zoukankan      html  css  js  c++  java
  • windows下的socket网络编程(入门级)

    已经很久没有在windows下编程了,这次因为需要做一个跨平台的网络程序,就先写了个简单的winSocket网路通信的例子,以便以后用到的时候有个参考。

    windows下使用winsock编程与linux/unix的区别在于windows下需要先有一个初始化的操作,结束的时候需要一个清理的操作。还有windows下编译的时候需要连接ws32_lib库。

    大致过程如下

    • 1、初始化

      /*加载Winsock DLL*/
      WSADATA wsd;
      if (WSAStartup(MAKEWORD(2 , 2) , &wsd) != 0) {
      printf("Winsock 初始化失败! ");
      return 1;
      }

    • 2、socket相关函数调用

      socket(...)
      bind(...)
      listen(...)
      connect(...)
      accept(...)
      send/sendto
      recv/recvfrom

    • 3、清理
      WSACleanup();

    clinet.c 客户端

    客户端的流程很简单。

    • 1、先是使用socket函数产生一个打开的socket文件描述符。
    • 2、使用connect函数去连接服务端
    • 3、使用read/recv等读文件函数从服务端接收数据,使用write/send等写文件的函数向服务端发送数据

    上面是典型的TCP编程流程,如果是UDP的话不需要connect去连接服务端直接使用sendto函数来发送数据,使用recvfrom接收来自服务器的数据

    server.c 服务器端

    服务器端的流程比客户端稍微复杂一点

    • 1、调用socket打开一个socket句柄
    • 2、调用bind来绑定socket句柄到一个网口的某个端口
    • 3、调用listen来设置(启用)监听
    • 4、调用accept来等待客户端的连接

    上面是典型的TCP编程流程,如果是UDP的,那么不需要3,4这两部,直接使用recvfrom来接收客户端发过来的数据即可。

    UDP通信的实现

    我这里没有写TCP的,因为都是局域网内,就简单的写了个。
    这里是在虚拟机里面测试的截图,代码见最后。

    http://www.cnblogs.com/oloroso/p/4613296.html

  • 相关阅读:
    notion笔记
    PHP性能分析工具xdebug+qcachegrind
    Homebrew1.5之后安装PHP和扩展
    Yii2 创建新项目目录
    MAC的一些实用
    Item2 + zsh
    YII2 RBAC Admin User权限相关
    ITEM 2 MAC OSX 功能略强大的终端
    MAC终端配色Solarized
    微服务 SpringCloud + docker
  • 原文地址:https://www.cnblogs.com/findumars/p/6253717.html
Copyright © 2011-2022 走看看