zfq572815535

在网络编程方面,最初用 C ,后来使用了一段时间的 C# .Net框架编程。 C# 它屏蔽了socket 编程的许多细节。

但是我还是回过头来使用面向 原始套接字编程的 c。这样才能学到更多。

先来回顾一下windows socket编程

需要

1)头文件 <windsock2.h>

2)库文件 "ws2_32.lib"

启动socket api(这一步与在linux系统中有区别)

WSADATE  wsaDate;

wVersionRequested  =  MAKEWORD(2,2);

err = WSAStartup(wVersionRequested, &wsaDate);

然后可以检查 wsaDate 结构体中启动的版本信息是否相同

下面我从简单的发送一条信息为例: client 发一条信息给 server

我们需要两个地址结构

sockaddr_in client,server;

在填充client.port时可以指定端口,也可以不指定(设为0);

填充server.addr为255.255.255.255,端口一定要指定;

还要记得重要的一点:发送套接字 socket 属性设置要设置为 广播 

否则会报错

bool bOpt = true;
setsockopt(connect_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt));

我们比较一下广播与单播的不同

单播不需要设置套接字属性,应为默认为单播。单播就必须指定具体的地址 server.addr;

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-08
  • 2022-12-23
  • 2022-12-23
  • 2021-07-29
  • 2021-08-14
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案