C语言网络编程(二)建立套接字通讯UDP

2023-11-08

所谓socket套接字,指的是在网络通信以前建立的通信接口。进行网络连接以前,需要向系统注册申请一个新的socket。然后使用这个socket进行网络连接。
提示:套接字=传输层协议+端口号+IP地址。
在进行网络连接以前,需要用socket函数向系申请一个通信端口。这个函数的使用方法如下所示。
int socket(int domain, int type, int protocol);
在参数表表中,domain 指定使用何种的地址类型。type参数的作用是设置通信的协议类型。参数protocol用来指定socket所使用的传输协议编号。这一参数通常不具体设置,一般设置为0即可。
在使用这个函数建立套接字以前,需要在程序的最前面包含下面的头文件。
#include <sys/types.h>
#include <sys/socket.h> 

如果建立套接字成功,则返回这个套接字的编号。如果不成功,则返回-1。这个函数可能发生的错误与含义如下所示。
EPROTONOSUPPORT:参数domain指定的类型不支持参数type或protocol指定的协议
ENFILE:核心内存不足,无法建立新的socket结构
EMFILE:进程文件表溢出,无法再建立新的套接字。
EACCESS :权限不足,无法建立type或protocol指定的协议。
ENOBUFS、ENOMEM:内存不足。
EINVAL:参数不合法。


注意:只创建套接字无法进行正常的网络体系,要想和其它计算机通信还必须借助于其它函数将建立的套接字与IP地址和端口号联系起来。

DEMO:

static int udp_example()
{
	int sockfd;
	sockfd=socket(AF_INET,SOCK_DGRAM,0);
	if(sockfd<0)
	{
		return -1;
	}
	return 0;
}

取得socket状态:函数getsockopt可以取得一个socket的参数。这个函数的使用方法如下所示。
int getsockopt(int s,int level,int optname,void* optval,socklen_t* optlen);
在参数列表中,s是已经建立socket的编号。level代表需要设置的网络层,一般设成SOL_SOCKET来表示socket层。参数optname代码的是需要获取的选项,可以设置成下面这些值。
SO_DEBUG:打开或关闭排错模式。
SO_REUSEADDR:允许在bind函数中本地地址可重复使用。
SO_TYPE:返回socket形态。
SO_ERROR:返回socket已发生的错误
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言网络编程(二)建立套接字通讯UDP 的相关文章

  • C# 从带引号的字符串中删除分隔符

    我正在编写一个程序 必须从文本文件中带引号的字符串中删除分隔符 例如 Hello my name is world 必须 Hello my name is world 起初这听起来很简单 我认为是这样 但是您需要检测引号何时开始 何时结束
  • 将 LUIS 与 FormFlow 集成

    我创建了一个机器人 里面有一个 FormFlow 现在 如果您输入 我想启动产品 LUIS 将告诉它必须转到哪个对话框 internal static IDialog
  • 从变量使用 OLE DB 源命令的 EzAPI 等效项是什么?

    tl dr 使用 来自变量的 SQL 命令 数据访问模式的 OLE DB 源并分配变量的 EzAPI 代码是什么 Preamble 每月一次 我们需要使用生产数据的子集刷新我们的公共测试站点 我们已确定 根据我们的需求 SSIS 解决方案最
  • 使用 C# 在 Windows 窗体应用程序中正确使用 OnClick 与 MouseClick 事件

    我目前正在开发一个自定义控件 并意识到我的代码正在运行两次 这实际上并不是一个大问题 它只是 Focus 方法调用 不过 我想了解一下 从阅读点击 MSDN说明单击事件 http msdn microsoft com en us libra
  • PostgreSQL:42883 运算符不存在:没有时区的时间戳 = 文本

    我正在使用 Npgsql 3 0 3 0 和 PetaPoco 最新版本 当我运行这个命令时 var dateCreated DateTime Now just an example var sql new Sql WHERE date c
  • 检查文件是真实文件还是符号链接

    有没有办法使用 C 来判断文件是真实文件还是符号链接 我已经挖过了MSDN W32 文档 https learn microsoft com en us windows win32 fileio file management functi
  • 不屈不挠的野兽:一个二维字符数组,位于结构内部,位于非托管 dll 的内部

    我束紧腰 冒险进入了遗产之地 砍倒 召唤并集结了各种野兽 现在我站在了一个如此凶猛的生物面前 据我对我的弟兄们进行的详尽调查来看 我现在所面对的生物是如此凶猛 武器中 没有一个代码战士能够幸存 以下是详细信息 我试图将结构内部的二维字符数组
  • 重写 ASP.Net Core 中的 415 响应

    在 ASP net Core 2 1 中 我想返回 Json 响应以及状态代码 415 而不是默认返回的 415 为了实现这一点 我使用资源过滤器 public class MediaTypeResouceFilter Attribute
  • Err_Response_Headers_Multiple_Content_Disposition

    我需要导出 2csv单击一个按钮即可打开文件 下面是我生成2的代码csv files using System Data using System Data SqlClient using System Text using System
  • GridView必须添加到表单标签中才能渲染

    TextWriter tr new StringWriter HtmlTextWriter writer new HtmlTextWriter tr HtmlForm form new HtmlForm form Controls Add
  • 如何将 Activator.CreateInstance 与字符串一起使用?

    在我的反射代码中 我的通用代码部分遇到了问题 特别是当我使用字符串时 var oVal object Test var oType oVal GetType var sz Activator CreateInstance oType oVa
  • std::regex 的行为不一致

    我有以下问题 std regex如果我传递结果 行为会有所不同boost filesystem path string vs 将结果存储在中间字符串变量中 第一个将返回一个被截断的匹配 并且稍后不被接受std stoull 抛出 inval
  • allocator.construct 循环是否等于 std::uninitialized_copy?

    在此背景下T是某种类型并且allocator是该类型的分配器对象 默认情况下是std allocator
  • CGAL:如何有效计算多面体的面面积?

    我有一个多面体 其面是三角形 我知道在 CGAL 中 Triangle 3 类提供了 squared area 方法 通过它我们可以计算三角形的面积 有什么方法可以将其应用到多面体方面吗 或者关于如何计算每个面的面积有什么想法吗 这是一个例
  • 从多页 tiff 中提取帧 - C#

    有一个多页 tiff 我想从此 Tiff 文件中提取第 n 页 帧 n 并保存它 如果我的多页 tiff 有 3 帧 在我提取一页 帧后 我想留下 1 张图像有 2 页 帧 并且 1 张图像只有 1 页 帧 下面是一些代码 用于将多帧 ti
  • C# 多重继承

    目前我正在学习 C 和 ASP NET MVC 4代码优先方法 我是 Visual Basic 开发人员 现在我想开始 C 而且 现在我遇到了必须管理多重继承的情况 但是 对于Class i来说这是不可能的 那么 我应该如何管理我拥有的这些
  • 解析 SWIG 接口文件的结构属性

    这是我不久前问过的问题的延续 为通过参数返回的函数创建类型映射 https stackoverflow com questions 12793973 create a typemap for a function that returns
  • 将base64字符串转换为图像c#时出错

    我想在我的网页上显示图像 并单击应该下载的链接按钮 存储的图像文件以二进制格式存储在db中 将 base64 字符串转换为图像时显示错误 详细信息如下 帮助我找到合适的解决方案 谢谢 Error Code protected void Pa
  • Fluent Validation 将 CustomAsync 更改为 MustAsync

    有人可以帮我解决这个问题吗 我正在努力改变CustomAsync 到 MustAsync 但我无法让事情发挥作用 下面是我的自定义方法 RuleFor o gt o MustAsync o gt return CheckIdNumberAl
  • 在实体框架中比较日期的最佳方法

    我在实体框架的 where 子句中使用日期并收到以下错误 这是由于以下代码 var entity dbContext MyTable Where w gt w PId 3 w CreatedOn Date mydate Date First

随机推荐

  • 使用Pandoc在命令行中转换文件

    Pandoc是用于将文件从一种标记语言转换为另一种标记语言的命令行工具 标记语言使用标签来注释文档的各个部分 常用的标记语言包括Markdown ReStructuredText HTML LaTex ePub和Microsoft Word
  • expr命令用法-实例讲解

    expr命令是一个手工命令行计数器 用于在UNIX LINUX下求表达式变量的值 一般用于整数值 也可用于字符串 格式为 expr Expression 命令读入Expression 参数 计算它的值 然后将结果写入到标准输出 参数应用规则
  • One PUNCH Man——深度学习入门

    文章目录 人类视觉原理 从神经网络到卷积神经网络 CNN 数据输入层 卷积计算层 卷积的计算 参数共享机制 激励层 池化层 全连接层 CNN优缺点 卷积神经网络的常用框架 人类视觉原理 深度学习的许多研究成果 离不开对大脑认知原理的研究 尤
  • java mail 通过 freemarker 发送邮件

    java mail 通过 freemarker 发送邮件 理解 java mail 核心类 1 MimeMessage 对象就是一封邮件 2 Session 定义系统属性信息 具体代码如下 1 controller 层代码如下 packag
  • ubuntu 下切换窗口

    通过 alt tab 键 在所有打开的程序之前切换 在切换过程中 如果遇到已经打开多个窗口的程序 可以按 alt 键 组合键 转入一个程序所有窗口中 循环切换 转载于 https www cnblogs com zach0812 p 115
  • C# 的文件读写方式汇总(学习心得 27)

    当打开文件进行读写时 它变成一个 流 从根本上说 流是通过通信路径传递的字节序列 有两个主要的流 输入流 和 输出流 输入流用于从文件读取数据 读操作 输出流用于向文件写入数据 写操作 超级小白友好 讲解C 基础 每集5分钟轻松学习 拒绝从
  • pta找完数问题,我想知道哪错了,pta上显示有两处答案错误,谢谢

    include
  • 2018/12/19统计字符出现字数

    本题要求编写程序 统计并输出某给定字符在给定字符串中出现的次数 输入格式 输入第一行给出一个以回车结束的字符串 少于80个字符 第二行输入一个字符 输出格式 在一行中输出给定字符在给定字符串中出现的次数 输入样例 programming i
  • MSF图形化界面Viper(炫彩蛇)下载与使用

    Viper 炫彩蛇 是一款图形化内网渗透工具 将内网渗透过程中常用的战术及技术进行模块化及武器化 Viper 炫彩蛇 集成杀软绕过 内网隧道 文件管理 命令行等基础功能 Viper 炫彩蛇 当前已集成70 个模块 覆盖初始访问 持久化 权限
  • zsh: command not found: brew

    问题 已经安装好Homebrew 命令行查看brew v 显示zsh command not found brew 解决方案 打开 如不存在此文件会自动创建 vim zshrc 在里面添加一行 export PATH opt homebre
  • 【数据结构】手把手带你搞懂顺序表(带图详解)

    文章目录 前言 1 顺序表 1 1 顺序表的结构体 1 2 功能实现 初始顺序表 增加顺序表长度 顺序表的查找 顺序表的插入 顺序表的删除 打印顺序表 顺序表的销毁 1 3 顺序存储结构的优缺点 顺序表总代码 前言 在本篇博客中 我会概述顺
  • 12.20 摄像机跟随玩家

    public class CameraFollow MonoBehaviour Transform player float up 11 away 17 Vector3 pos float speed 3f void Start playe
  • 基于JSP的网络超市商品销售管理系统的毕业设计与实现

    论文题目 基于JSP的网络超市商品销售管理系统的毕业设计与实现 摘要 随着电子商务的快速发展 网络超市已经成为人们购物的重要途径之一 本文基于JSP Java Server Pages 技术 设计了一个网络超市商品销售管理系统 旨在提供一个
  • BUUCTF,Web:[极客大挑战 2019]Havefun

    无其他可动项 先看源码 cat GET cat echo cat if cat dog echo Syc cat cat cat cat get 传 cat dog 得到 flag
  • datagrip插入汉字报错

    1 datagrip报错信息 HY000 1366 Incorrect string value xE5 xA4 xA7 xE5 xB8 x88 for column name at row 1 2 原因 编码格式有问题 建立表的时候不能插
  • 多线程之间实现通讯

    多线程之间如何实现通讯 什么是多线程之间通讯 多线程之间通讯 其实就是多个线程在操作同一个资源 但是操作的动作不同 画图如下 我这里有个例子 就是弄两个线程 一个进行写 一个进行读 写的话 如果是偶数 就是java 男 如果是奇数 就是ph
  • c++编写消消乐游戏

    include
  • AR基础讲解:打造AR元宇宙博物馆编程之旅

    AR基础讲解 打造AR元宇宙博物馆编程之旅 随着技术的不断发展 增强现实 AR 正逐渐成为各个领域的热门技术 而在AR中 构建一个全新的虚拟世界 AR元宇宙博物馆 使我们能够透过手机或其他AR设备与数字内容进行互动 本文将为大家介绍如何使用
  • 美国病毒systemd占用100%,root密码登录卡死

    1 top 查看到有僵尸进程一直启动 2 lsof p 752 查看进程的来源 3 crontab l 查看定时任务 是否有自动启动
  • C语言网络编程(二)建立套接字通讯UDP

    所谓socket套接字 指的是在网络通信以前建立的通信接口 进行网络连接以前 需要向系统注册申请一个新的socket 然后使用这个socket进行网络连接 提示 套接字 传输层协议 端口号 IP地址 在进行网络连接以前 需要用socket函