udp

When to close a UDP socket

不问归期 提交于 2020-04-10 02:07:08
问题 I have a client-server application that uses a UDP socket to send the data , the data only have to travel from client to server , and the server will always have the same IP. The only requirement is that I have to send messages about 10 messages per second Currently I am doing it the following way : public void SendData(byte[] packet) { IPEndPoint end_point = new IPEndPoint(serverIP, serverPort); UdpClient udpChannel = new UdpClient(sourcePort); udpChannel.Connect(end_point); udpChannel.Send

When to close a UDP socket

為{幸葍}努か 提交于 2020-04-10 01:58:28
问题 I have a client-server application that uses a UDP socket to send the data , the data only have to travel from client to server , and the server will always have the same IP. The only requirement is that I have to send messages about 10 messages per second Currently I am doing it the following way : public void SendData(byte[] packet) { IPEndPoint end_point = new IPEndPoint(serverIP, serverPort); UdpClient udpChannel = new UdpClient(sourcePort); udpChannel.Connect(end_point); udpChannel.Send

网络编程

限于喜欢 提交于 2020-04-07 21:16:35
一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好。但是如果这两个程序之间想要传递一个数据,你要怎么做呢? 这个问题以你现在的知识就可以解决了,我们可以创建一个文件,把a.py想要传递的内容写到文件中,然后b.py从这个文件中读取内容就可以了。 但是当你的a.py和b.py分别在不同电脑上的时候,你要怎么办呢? 类似的机制有计算机网盘,qq等等。我们可以在我们的电脑上和别人聊天,可以在自己的电脑上向网盘中上传、下载内容。这些都是两个程序在通信。 回到顶部 二.软件开发的架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~ 1.C/S架构 C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的。 这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。 2.B/S架构 B/S即:Browser与Server

Wireshark抓包,带你快速入门

回眸只為那壹抹淺笑 提交于 2020-04-07 19:22:29
原文: Wireshark抓包,带你快速入门 前言 关于抓包我们平时使用的最多的可能就是Chrome浏览器自带的Network面板了(浏览器上F12就会弹出来)。另外还有一大部分人使用Fiddler,Fiddler也是一款非常优秀的抓包工具。但是这两者只能对于HTTP和HTTPS进行抓包分析。如果想要对更底层的协议进行分析(如TCP的三次握手)就需要用到我们今天来说的工具Wireshark,同样是一款特牛逼的软件,且开源免费自带中文语言包。 安装和基本使用 Wireshark开源地址: https://github.com/wireshark/wireshark Wireshark下载地址: https://www.wireshark.org/download ,这里有它的历史版本。今天我们就来安装最新版本3.2.0,一路默认“下一步”安装大法就可以了。安装好后默认就是中文版。 开始抓包 显示过滤器 你会发现第一部分内容跳到非常快,根本没法找到自己想要分析的内容。这里我们可以使用显示过滤器,只显示我们想要看的内容。 在显示过滤器填入 http.reques127.0.0.1thod == "GET" ,然后用Chrome浏览器访问 http://fanyi-pro.baidu.com/index (特意找的一个http网站) 除了过滤Get请求外,常用的显示过滤器还有: tcp

Java Socket(四)使用UDP传输数据

妖精的绣舞 提交于 2020-04-07 05:44:51
参考资料: UDP Socket 编程 package socket; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPSocketClient { public static void main(String[] args) throws IOException { //1.定义服务器的地址、端口、数据 InetAddress address= InetAddress.getByName("localhost"); int port = 8800; byte[] data = "Hello".getBytes(); //2创建数据报 DatagramPacket packet = new DatagramPacket(data, data.length, address, port); //3创建DatagramSocket DatagramSocket socket = new DatagramSocket(); //4发送数据 socket.send(packet); System.out.println("Sended"); /* *

基于P2P技术实现内网到内网UDP穿透--转载

你说的曾经没有我的故事 提交于 2020-04-06 20:19:11
P2P: 只要是数据量很大,而一般利用中转服务器又需要一定规模投入的应用,我们都可以考虑用 P2P 技术。 好处: 1. 降低成本与投入。 2. 提高传输性能。 一般情况下,我们做网络程序,首先都会考虑用 TCP 的方式来实现,用 TCP 的方式主要的好处有: 1. 编写程序简单,大部分是采用 C-S 模型,也就是客户端对服务器。 2.TCP 的特性保证了数据传输的可靠性,只要适当定制好协议,基本不会有网络丢包与边界的问题。 但同时, TCP 也有缺点,就是通信效率较低。 做好 P2P 应用至少需要解决两个问题: 1. 实现内网之间机器的网络通信。 2. 需要 解决 UDP 出现的数据传输不稳定 问题。 内网穿透 假设一台在 NAT211.133.* 后的 192.168.1.77:8000 要向 NAT211.134.* 后的 192.168.1.88:9000 发送数据,假设你向 211.134.* 这个 IP 地址的 9000 端口直接发送数据包,则数据包在到达 NAT211.134.* 之后,会被当做无效非法的数据包被丢弃, NAT 在此时相当于一个防火墙 , 会对没有建立起有效 SESSION 的数据包进行拒绝转递。 当然,你也不能直接用内网地址 192.168.1.88 进行发送数据包,这就好比你在广州要打电话到上海的某个地方,如果你不加区号

ACE中UDP通信

巧了我就是萌 提交于 2020-04-06 17:17:11
udp是一种无连接的协议,提供 无连接不可靠 的服务。 在ace中,通过 ACE_SOCK_Dgram 类提供udp通信服务,ACE_SOCK_Dgram和ACE_SOCK_Stream的API非常类似,一样提供了send,recv及close等常用操作,这里就不再累述了。 udp通信时无需像tcp那样建立连接和关闭连接,tcp编程时需要通过accept和connect来建立连接,而udp通信省略了这一步骤,相对来说编程更为简单。 由于udp通信时无建立连接,服务器端不能像Tcp通信那样在建立连接的时候就获得客户端的地址信息,故 服务器端不能主动对客户端发送信息 (不知道客户端的地址),只有等到收到客户端发送的udp信息时才能确定客户端的地址信息,从而进行通信。 udp通信过程如下: 服务器端绑定一固定udp端口,等待接收客户端的通信。 客户端通过服务器的ip和地址信息直接对服务器端发送消息。 服务器端收到客户端发送的消息后获取客户端的ip和端口信息,通过该地址信息和客户端通信。 下面代码为EchoServer的udp版: //server.cpp #include <ace/SOCK_Dgram.h> #include <ace/INET_Addr.h> #include <ace/Time_Value.h> #include <string> #include

http、tcp、udp、cookie、session、web 应用之间的无状态和有状态传输

↘锁芯ラ 提交于 2020-04-06 00:03:37
无状态含义 每次的请求都是独立的,即不会受上一次请求状态的影响,也不会影响下一次的请求进程。如http 、udp 、ip均为无状态请求 有状态含义 与无状态请求相对应,上一次的请求成功与否直接影响下一次的请求进程。如tcp 为有状态请求 tcp 有状态请求过程 tcp的三次握手 1、当客户端开始发送请求建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。 2、服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态 3、客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手 SYN:同步序列编号(Synchronize Sequence Numbers) tcp的四次挥手 与tcp的三次握手建立连接对应,tcp的四次挥手就断开连接 1、客户端发送一个FIN,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态 2、服务器端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器端进入CLOSE_WAIT状态 3、服务器端发送一个FIN,用来关闭服务器端到客户端的数据传送

VS2015 : The application was unable to start correctly (0xc000007b)

柔情痞子 提交于 2020-04-05 19:17:37
问题 I wrote a code on Visual studio 2015 for a windows 10 PC. The application is mainly focused on UDP communication and I use the boost libraries. It works perfectly but when I move the folder of the code to Windows 7 I receive the error "The application was unable to start correctly (0xc000007b)". I tried also in Windows 8.1 and after rebuilding the libraries it works. What I noticed is that when I receive the error it does not load the .dll that in the other versions it loads. May it be a

VS2015 : The application was unable to start correctly (0xc000007b)

不问归期 提交于 2020-04-05 19:16:17
问题 I wrote a code on Visual studio 2015 for a windows 10 PC. The application is mainly focused on UDP communication and I use the boost libraries. It works perfectly but when I move the folder of the code to Windows 7 I receive the error "The application was unable to start correctly (0xc000007b)". I tried also in Windows 8.1 and after rebuilding the libraries it works. What I noticed is that when I receive the error it does not load the .dll that in the other versions it loads. May it be a