首页 > 系统相关 >计算机科学与技术之网络编程 Windows下VC6.0 网络SOCKET编程C语言实现(服务端)

计算机科学与技术之网络编程 Windows下VC6.0 网络SOCKET编程C语言实现(服务端)

时间:2023-11-21 17:45:54浏览次数:38  
标签:SOCKET 函数 编程 网络 sAddr 接字 SSock 客户端

在VC6.0平台用C语言实现网络SOCKET通信

一.在VC6.0平台创建Win32 Console Application工程

  1. 工程名称自拟(或输入firstSocket)
  2. 添加新建项文件C++ Source File  
  3. 文件名自拟,后缀.c (如firstSocket.c)
  4. 在firstSocket.c 加入头文件#include <winsock2.h>
  5. 链接动态库#pragma comment (lib,"ws2_32.lib")

 

二.基于SOCKET通信基本原理

SOCKET是外文名称,意思是插座、插孔、窝;槽;套筒等,中文名通常称为“套接字”。SOCKET通信原理按以下几个函数顺序实现:

1、操作系统提供一个socket函数用来创建SOCKET。socket函数需要传递通信协议族和套接字的类型参数,也就是表明将要创建的什么样的SOCKET(套接字).

2、bind函数将地址信息绑在socket函数创建好的SOCKET上。

3、接着调用Listen函数监听包含地址信息的SOCKET,并提供连接的队列数量。Listen函数的监听工作由操作系统来完成。

4、有客户端来连接,操作系统就调用一直在等待的accept函数来接收,accept函数执行成功就会返回一个客户端套接字(CLIENT),这个套接字包含连接来的客户端的地址信息。

5、接着就可以通过这个客户端套接字来获取发送过来的信息或者发送信息给客户端

 

简单服务端的代码:

//server

 

#include <stdio.h>

#include <winsock2.h>

#pragma comment (lib,"ws2_32.lib")

int main()

{

WSADATA wsaData;

SOCKET SSock,CSock;

SOCKADDR_IN sAddr,cAddr;

int szCAddr;

char message[]="Hello Client!";

WSAStartup(MAKEWORD(2,2),&wsaData);//

SSock= socket(PF_INET,SOCK_STREAM,0);// PF_INET 为IP4协议族,类型是SOCK_STREAM

memset(&sAddr,0,sizeof(sAddr));  //初始化地址信息

servAddr.sin_family=AF_INET;

servAddr.sin_addr.s_addr=htonl(INADDR_ANY);

servAddr.sin_port=htons(55555);

bind(SSock,(SOCKADDR*)&sAddr,sizeof(sAddr);//绑定服务端地址信息

listen(SSock,5);//监听

 

szCAddr= sizeof(cAddr);

CSock= accept(SSock,(SOCKADDR*)&cAddr,&szCAddr);//接收连接,返回客户端套接字

send(CSock,message,sizeof(message),0);//基于客户端套接字把信息发往客户端

closesocket(CSock);

closesocket(SSock);

WSACleanup();

return 0;

}

三、基于SOCKET编程还涉及到的内容

1、网络数据传输序列:大端和小端htonl

2、地址信息的结构体SOCKADDR_IN

3、套接字协议和类型的设置

4、Winsock的初始化WSAStartup(MAKEWORD(2,2),&wsaData)

5、各种I/O模式

标签:SOCKET,函数,编程,网络,sAddr,接字,SSock,客户端
From: https://www.cnblogs.com/wumingliang/p/17847156.html

相关文章

  • 适用于广泛的物联网应用RM500QAEAA-M20-SGASA、EG25GGB-MINIPCIE、EM06ELA-512-SGAS网
    1、RM500QAEAA-M20-SGASA是一款5Gsub-6GHzM.2模块,尺寸为52.0mm×30.0mm×2.3mm,符合3GPPRelease15规范,针对工业和商业物联网及eMBB应用进行了优化。它支持独立(SA)和非独立(NSA)模式,最大下行链路速率为2.5Gbps,最大上行链路速率为900Mbps。RM500QAEAA-M20-SGASA支持Q......
  • 如何选择各层网络结构交换机
    对于一大型监控项目,交换机的选择尤为重要,今天我们以三层网络结构为例展开聊聊,网络结构大致分为接入层‐汇聚层‐核心层。相对两层网络架构,三层架构网络组网规模更大,传输距离更远,网络可拓展性更强。接入层交换机对于接入层交换机的使用,如果项目本身不是很大的话,可以使用一些非网管的......
  • 编程之旅,扬帆起航
    嗨,亲爱的读者!我是顾平安,感谢您点开我的这篇博客。作为一个对技术充满热情的新手,我会在博客园分享我的学习之旅,希望能与你们一起成长。自我介绍我是某机构的前Python讲师,从大学起对计算机科学和编程充满了浓厚的兴趣。我的编程旅程始于2020年,当时我被爬虫技术深深吸引。从那......
  • 电视家APP会员退款了 —— 网络电视APP的合规性处理
      今天打开家里网络电视的时候突然发现“电视家APP”居然无法使用了,随后发现账户关联的银行卡收到退款了,于是好奇的研究了一下这个事情。 由于家里是在农村,闭路电视的图像效果很差,估计可能都没有720p的画面质量,为此使用网络电视1080p画面是个不错的选择,因此也使用了几年的......
  • 零代码编程:用ChatGPT根据视频标题来批量重命名字幕文件
    现在有很多视频文件:还有视频相对应的字幕文件:F:\儿童学习教育\Abadas.适合2岁以上.BBC儿童学习单词的动画\abadas字幕两者的文件标题不一样,现在要将字幕文件的标题全部根据视频文件来重命名。在chatGPT中输入提示词:你是一个Python编程专家,要完成一个根据视频标题来批量重命名字幕文......
  • 网络安全笔记
    2017年6月1日正式实施《中华人民共和国网络安全法》远程桌面mstscrdp协议默认3389端口kali忘记密码时,进入单用户模式直接修改kali的root密码1.开机时进入系统选择按e2.在编辑页面的倒数第三行把ro换成rw,并且在最后添加init=/bin/bash命令,修改完后按F10进入Boot单......
  • Linux网络配置
     一:桥接:在此连接方式,安装的虚拟机相当于和物理主机是两台独立的计算机,如果局域网中有DHCP服务,那么,虚拟机将能够获得本局域网的IP地址,此时虚拟机的IP网段和主机的IP地址处于同一网段下,两者之间可以通信。如果局域网内没有提供DHCP服务,需要手动配置一个和物理主机在同一个网段下......
  • Spring_202311_21_2 2. AOP面向切面编程
    Spring_202311_21_22. AOP面向切面编程AOP:全称是AspectOrientedProgramming即:面向切面编程。简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。即当需要扩展功能时,传统方式采用纵向继承方式......
  • Android并发编程高级面试题汇总(含详细解析 八)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......
  • 神经网络入门篇:直观理解反向传播(Backpropagation intuition)
    详细推导反向传播下图是逻辑回归的推导:回想一下逻辑回归的公式(参考公式1.2、公式1.5、公式1.6、公式1.15)公式1.38:\[\left. \begin{array}{l} {x}\\ {w}\\ {b} \end{array} \right\} \implies{z={w}^Tx+b} \implies{\alpha=\sigma(z)} \implies{{L}\left(a,y......