基于Udp(收发信息使用同一个socket)网络通信编程

想要实现网络通信那么就要有一个客户端一个服务器
客户端发送数据,服务器接收数据并返回数据
网络通信就是进程通信
所以我们用两个程序来分别编写客户端和服务器

服务器

1,设置端口号,
2、ip可以固定位127.0.0.1来用于本地测试,但一般不固定,而是让他自己获取本机的ip

3、创建套接字socket
这里的创建只相当于打开网卡文件,设置进去了网络通信的方式(个人理解),就相当于创建了一个文件,返回了他的文件描述符。
在这里插入图片描述
4、
服务器的话要手动把socket文件和网络套接字绑定:
首相要把网络套接字结构填充好(还没有绑定):
在这里插入图片描述
绑定:bind网络系统库调用:
在这里插入图片描述
现在这个服务器程序就有了自己网络通信的套接字(ip port)
5、接收数据:
在这里插入图片描述
6,发送消息,他在接收消息的时候也接收了发消息的那个客户端的套接字,就相当于知道了客户端的ip 和port,那么他就可以把消息发送回客户端
在这里插入图片描述
到这服务器程序就写好了:直接运行服务器:
在这里插入图片描述

客户端

1.客户端想要实现网络通信也要创还能socket文件:
在这里插入图片描述
2、不同的是客户端并不用手动代码把socket文件和字节套网络通信结构体关联,
因为在客户端发送消息的时候,系统会自动分配端口号和ip给他
3、但是他要发送消息就要知道要发送给的那个服务器的套接字(ip port),所以还是需要填写一个套接字结构体来把服务器的 ip port填写进去
以供发送
在这里插入图片描述
4、他也可以接收服务器发来的消息
在这里插入图片描述

到这就基本实现了服务器和客户端网络通信的测试了
详细代码:

Udp_socket

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/660256.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于文本来推荐相似酒店

基于文本来推荐相似酒店 查看数据集基本信息 import pandas as pd import numpy as np from nltk.corpus import stopwords from sklearn.metrics.pairwise import linear_kernel from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extrac…

TPshop商城的保姆教程(windows)

提前准备 phpStudy下载:https://www.xp.cn/download.html 选择适合自己的版本下载 TPshop商城源文件下载链接: https://pan.baidu.com/s/143fLrxbwe9CTMCbyx7mXJQ?pwd6666 开始安装 安装完phpstudy后 以管理员的身份启动phpstudy.exe 选择合适自己…

[猫头虎分享21天微信小程序基础入门教程] 第20天:小程序的多媒体功能与图像处理

[猫头虎分享21天微信小程序基础入门教程] 第20天:小程序的多媒体功能与图像处理 第20天:小程序的多媒体功能与图像处理 🎨 自我介绍 大家好,我是猫头虎,一名全栈软件工程师。今天我们继续微信小程序的学习&#xff…

SRE视角下的DevOps构建之道

引言: 随着数字化时代的飞速发展,软件成为了企业竞争力的核心。为了更高效地交付高质量的软件,DevOps(Development和Operations的组合)作为一种文化、实践和工具集的集合,逐渐成为了行业内的热门话题。然而…

记录贴 Elasticsearch的RestClient进行DSL查询

must:必须匹配每个子查询,类似“与” should:选择性匹配子查询,类似“或” must_not:必须不匹配,不参与算分,类似“非” filter:必须匹配,不参与算分 package com.h…

java中的工具类

以下是我们到现在学的三个类 在书写工具类的时候我们要遵循以下的规则 类名见面知意是为了知道这个工具类的作用 私有化构造方法的作用是为了不让外界不能创造这个类的对象吗,因为工具类不是描述一个事物的,它是一个工具。 方法定义位静态是为了方便调用…

网页中的音视频裁剪拼接合并

一、需求描述 项目中有一个配音需求: 1)首先,前台会拿到一个英语视频,视频的内容是A和B用英语交流; 2)然后,用户可以选择为某一个角色配音,假如选择为A配音,那么视频在播…

Linux学习笔记(二)

一、Linux文件目录 1.命令:tree -L 1 2.挂载命令(例如U盘,需要挂载之后才能访问): mount /dev/cdrom /mnt ls /mnt 3.查看登录信息: last / lastlog 4.修改/查看网络信息 vi /etc/sysconfig/netw…

kubernetes-PV与PVC

一、PV和PVC详解 当前,存储的方式和种类有很多,并且各种存储的参数也需要非常专业的技术人员才能够了解。在Kubernetes集群中,放了方便我们的使用和管理,Kubernetes提出了PV和PVC的概念,这样Kubernetes集群的管理人员就…

jsRpc js逆向远程调用加密函数

rpc介绍: RPC 全称 Remote Procedure Call——远程过程调用,简单说就是为了解决远程调用服务的一种技术,使得调用者像调用本地服务一样方便透明; 使用RPC服务就可以直接在浏览器中的页面js中注入代码,将其作为一个客户端&#xff…

真实故障分享,H3C ER3208G3-X路由器-双绞线一闪一停

六类非屏蔽双绞线 网线钳 如上图所示,2号线接到h3c路由器出现网线一闪一停,用对线器测试一到8芯能一一对应,无法上网。2号线接到h3c交换机能正常上网,难道是网线对568A 568B有要求? 解决方式:通过两端568…

电脑丢失api-ms-win-crt-runtime-l1-1-0.dll的多种修复方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“api-ms-win-crt-runtime-l1-1-0.dll丢失”。这个错误通常发生在Windows操作系统中,它表示一个动态链接库文件丢失或损坏。这个问题可能会导致某些应用程序无法正常运行&#xf…

synchronized 锁的到底是什么?

通过8种情况演示锁运行案例,看看我们到底锁的是什么 1锁相关的8种案例演示code package com.bilibili.juc.lock;import java.util.concurrent.TimeUnit;/*** 题目:谈谈你对多线程锁的理解,8锁案例说明* 口诀:线程 操作 资源类* 8…

代码随想录算法训练营第36期DAY43

DAY43 343整数拆分 注意:当几个数的数值相近,乘积才会尽可能地大(好想:数一大一小,最大当然是自己乘以自己) 代码随想录官方题解: class Solution {public: int integerBreak(int n) { …

【Tlias智能学习辅助系统】01 准备工作

Tlias智能学习辅助系统 01 创建员工、部门表创建springboot工程,引入对应的起步依赖(web、mybatis、mysql驱动、lombok)准备 Mapper、Service、Controller 等基础结构MapperServiceControllerpojo封装类application.properties 接口开发规范 创建员工、部门表 -- 创…

前端调用exe程序配置

前置条件 访问端安装好需要调用的exe程序 1、新建reg文件 先新建一个txt文件,重命名为xx.reg 点击是,确认更改 2、编写注册表内容 右键点击文件,用记事本打开,输入以下内容 将下面的${exeName}修改为自定义的程序名&#x…

Web开发中,就session和cookie相比,用session比用cookie的优点有哪些?

在Web项目中,session和cookie都是用于存储用户数据的机制,但它们有不同的优缺点。使用session比使用cookie有以下几个主要优点: 1. 安全性更高 敏感数据保护:Session数据存储在服务器端,而不是客户端。这样&#xff…

Nginx教程(持续更新中~)

浏览器优先查看host文件中的映射,如果host中没有就会从网上CDN找该域名对应的ip,但是目前使用的www.123.com是外卖假设的,CDN中并没有,所以就采用host中填写 第二种weight: 第三种 ip_hash: 第四种 fair: ​​​​​​

倩女幽魂手游攻略:新人入坑必看指南!

《倩女幽魂》是一款经典的MMORPG游戏,凭借其丰富的剧情、精美的画面和多样的玩法,吸引了众多玩家。在游戏中,提升角色等级和战斗力是每个玩家的核心目标。本文将详细介绍如何在游戏中快速提升角色等级、增强实力,并提供一些实用的…

MyBatisPlus学习笔记(二)

条件构造器: Wrapper的作用就是来封装我们当前的条件的 删除用的和查询用的一样:QueryWrapper 和 LambdaQueryWrapper MyBatis-Plus分页插件的配置和使用 Ctrl H 查看当前接口或者类的一个继承关系 Ctrl P 分页插件 乐观锁和悲观锁 通用枚举 代码…