UDP socket也可以使用connect系统调用
对于UDP来说:
socket()函数建立一个插口;
bind()函数指明了本地地址/端口(包括ADDR_ANY, 通配所有本地网络接口);
connect()可以用来指明目的地址/端口;
一般来说,UDP客户端在建立了插口后会直接用sendto()函数发送数据,需要在sendto()函数的参数里指明目的地址/端口。如果一个UDP客户端在建立了插口后首先用connect()函数指明了目的地址/端口,然后也可以用send函数发送数据,因为此时send函数已经知道对方地址/端口,用getsockname()也可以得到这个信息。
UDP客户端在建立了插口后会直接用sendto()函数发送数据,还隐含了一个操作,那就是在发送数据之前,UDP会首先为该插口选择一个独立的UDP端口(在1024—5000之间),将该插口置为已绑定状态。如果一个UDP客户端建立插口后首先用bind()函数指明了本地地址/端口,也是可以的,这样可以强迫UDP使用指定的端口发送数据。(事实上,UDP无所谓服务器和客户端,这里的界限已经模糊了。)
UDP服务器也可以使用connect(),如上面所述,connect()可以用来指明目的地址/端口;这将导致服务器只接受特定一个主机的请求。
方法一:
socket()——>sendto()或recvfrom()
方法二:
socket()——>connect()——>send或recv()
UDP socket也可以使用connect系统调用的更多相关文章
- 以C语言为例完成简单的网络聊天程序以及关于socket在Linux下系统调用的分析
套接字是网络编程中的一种通信机制,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程. 端 ...
- UDP编程中的connect
标准的udp客户端开了套接口后,一般使用sendto和recvfrom函数来发数据,最近看到ntpclient的代码里面是使用send函数直接法的,就分析了一下,原来udp发送数据有两种方法供大家选用 ...
- UDP socket 设置为的非阻塞模式
UDP socket 设置为的非阻塞模式 Len = recvfrom(SocketFD, szRecvBuf, sizeof(szRecvBuf), MSG_DONTWAIT, (struct so ...
- How To: Perl TCP / UDP Socket Programming using IO::Socket::INET
http://www.thegeekstuff.com/2010/07/perl-tcp-udp-socket-programming/ In this article, let us discuss ...
- Python Udp Socket
socket(套接字),传输层通信的端点,由IP和端口号组成(IP,Port),可以通过socket精确地找到服务器上的进程并与之通信 python2.6实现,基于AF_INET(网络套接字) 类型S ...
- Linux编程之UDP SOCKET全攻略
这篇文章将对linux下udp socket编程重要知识点进行总结,无论是开发人员应知应会的,还是说udp socket的一些偏僻知识点,本文都会讲到.尽可能做到,读了一篇文章之后,大家对udp so ...
- TCP&UDP&Socket讲解(上)
这两天我将整理TCP&UDP&Socket,大约花大家10-15分钟之间,希望本篇文章让大家对TCP使用的理解提高一个层次. 建议大家拿出纸和笔,画一下!!! 一.TCP 1. TCP ...
- 【转】Linux编程之UDP SOCKET全攻略
转自:http://www.cnblogs.com/skyfsm/p/6287787.html?utm_source=itdadao&utm_medium=referral 这篇文章将对lin ...
- connect系统调用
/* * Attempt to connect to a socket with the server address. The address * is in user space so we ve ...
随机推荐
- T-sql 行转列,数据库查询分页
1 USE [APS_Future_FT] 2 GO 3 /****** Object: StoredProcedure [dbo].[A_CrudePrice] Script Date: 2013/ ...
- 矩阵乘法<简单总结>
原理:矩阵相乘最重要的方法是一般矩阵乘积.它只有在第一个矩阵的 行数 和第二个矩阵的 列数 相同时才可进行.若A为m×n矩阵,B为n×p矩阵,则他们的乘积AB会是一个m×p矩阵. 若A= a ...
- linux基础命令学习(二)文件和目录操作
1.变换当前目录(change directory) cd /home 进入 '/ home' 目录' (change directory) cd .. 返回上一级目录 cd .. ...
- spring ioc 理解
springIOC 作用 springIOC 是sprig的特性.称作控制反转.将对象的创建,初始化,销毁,交给spring容器管理. 原理 在spring容器启动的时候,通过反射的方式,主动加载(或 ...
- Django 中文显示
Django中文显示: 1.如要在.py文件中显示中文,在文件首行加上:# -*- coding: utf-8 -*- 2.如要在html文件中显示中文,要将文件保存为UTF-8格式 3.在setti ...
- WICED™ <SMART> Software Development Kit
WICED™ Software Development Kit The WICED™ SDK includes the tools and software needed to create Wi-F ...
- 模板方法在Spring事务中的应用
事务对于我们来讲不并陌生,也是在实际应用中一直都在使用.在JDBC中,事务大致的使用结构如下: 开启事务 业务逻辑处理 提交事务 Spring只是对事务进行了扩展和封装使用,现在看看在内部它是如何工作 ...
- Spring MVC - Hello World示例
以下示例演示如何使用Spring MVC框架编写一个简单的基于Web的Hello World应用程序.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发一个 ...
- SpringMvc(1) --Eclipse搭建web项目
http://blog.csdn.net/uucai http://blog.csdn.net/uucai/article/details/21258575
- 【转载】Redis Sentinel 高可用服务架构搭建
作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...