Java study 1:The note of studying Socket which based UDP
UDP concept:
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。(from baike)
- UDP program:
因爲UDP協議是一種無連接的協議,所以
(1)、每次發送數據並不需要綁定,只需要使用DatagramPacket()構造好對應的數據包就可以了;
(2)、沒有像TCP一樣的ServerSocket 與Socket之分,雙方都用DatagramPacket初始化;
(3)、發送接收用send(數據包),receive(數據包)
下面上代碼:
*UDP並無Server與Client之分,但是代碼一個發送一個接受就起了這名字(這並不重要~逃)
*發送成功之後雙方就建立了一個鏈接(虛),可以互發數據
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException; public class UdpServer {
public static void main(String[] args) {
DatagramSocket dgs = null;
try {
dgs=new DatagramSocket(8888);
//receive
byte[] buf=new byte[256];
int length=256;
DatagramPacket dgp=new DatagramPacket(buf, length);
dgs.receive(dgp);
System.out.println("receive from client:"+new String(buf, 0, length)); //send
String str="yeah i have receivered~";
System.out.println(dgp.getAddress());//use last time's packet to get the address
System.out.println(dgp.getPort());
DatagramPacket dgp_send=new DatagramPacket(str.getBytes(),str.length(), dgp.getAddress(), dgp.getPort());
dgs.send(dgp_send);
dgs.close();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
dgs.close();
}
}
}
UdpServer
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; public class UdpClient {
public static void main(String[] args) {
DatagramSocket dgs = null;
try {
dgs=new DatagramSocket();
//send->server
String str="so dirty haha~";
DatagramPacket dgp_send=new DatagramPacket(str.getBytes(),0,str.length(),InetAddress.getByName("localhost"),8888);
dgs.send(dgp_send);
//receive from server
byte[] buf=new byte[256];
DatagramPacket dgp2_receive=new DatagramPacket(buf, 256);
dgs.receive(dgp2_receive);
System.out.println("receive from server:"+new String(buf,0,256));
dgs.close(); } catch (Exception e) {
System.out.println("error:"+e);
}
}
}
UdpClient
p.s.I:Server 的 send 部分使用之前用來接收數據的包dgp來取得發送者的address以及port,然後再用新的DatagramPacket來發送數據
p.s.II:DatagramPacket的搆造函數中,byte[]用來放數據,length用來放長度,程序簡單所以數字亂寫的(ha
Java study 1:The note of studying Socket which based UDP的更多相关文章
- Java study 2:The note of studying Socket which based TCP
TCP concept: 传输控制协议(Transmission Control Protocol, TCP)是一种面向连接(连接导向)的.可靠的.基于字节流的运输层(Transport layer) ...
- java.net.SocketException: Software caused connection abort: socket write error
用Java客户端程序访问Java Web服务器时出错: java.net.SocketException: Software caused connection abort: socket write ...
- [JAVA] java class 基本定义 Note
java class 基本定义 Note 1 package abeen.note; 2 import java.util.*; 3 4 5 /* 6 java calss 基本 7 */ 8 pub ...
- Java从零开始学四十五(Socket编程基础)
一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...
- testNG java.net.SocketException: Software caused connection abort: socket write error
执行用例报错,提示 java.net.SocketException: Software caused connection abort: socket write error java.net.So ...
- Caused by: java.net.SocketException: Software caused connection abort: socket write error
1.错误描述 [ERROR:]2015-05-06 10:54:18,967 [异常拦截] ClientAbortException: java.net.SocketException: Softwa ...
- ClientAbortException: java.net.SocketException: Software caused connection abort: socket write erro
1.错误描述 ClientAbortException: java.net.SocketException: Software caused connection abort: socket writ ...
- 【Java】NO.80.Note.1.Java.1.001-【Java 各种特性概念】
1.0.0 Summary Tittle:[Java]NO.80.Note.1.Java.1.001-[Java 各种特性概念] Style:Java Series:Java Since:2018-0 ...
- 运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接
运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接 最近在项目中可能要用到socket相关的东西来发送消息,所以初步研究了下socket的TC ...
随机推荐
- qt实现头像上传功能(朝十晚八的博客,一堆帖子)
http://www.cnblogs.com/swarmbees/p/5688885.html
- 利用Java反射机制完成XML到对象的解析
对于一些小批量的数据,如果采用数据库来存取的话,未免有点大题小作,使用XML文件是个不错的方法,尤其是在一些Web应用中,经常需要缓存一部分数据,如果将这些数据形成XML文件,解析后放入一个Hasht ...
- MySQL使用rand函数实现随机数
sql 的随机函数newID()和RAND() sql server的随机函数newID()和RAND() SELECT * FROM Northwind..Orders ORDER BY NEWID ...
- 【HDOJ】3242 List Operations
注意以下数据:[] ++ [][] -- [1,2][1,2] ++ [][] ++ [1][2] ++ [][2,3] -- []结果是[][][1,2][1][2][2,3] /* 3242 */ ...
- 【转】轻量级文本编辑器,Notepad最佳替代品:Notepad++--不错
原文网址:http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/npp_function_column_mode.htm ...
- 网络编程-pcap数据包格式
Libpcap的官方网站是http://www.tcpdump.org/,该项目和Tcpdump项目是同一个团队维护.Libpcap是一个平台独立的 数据包捕获开发包,制定了数据包离线存储的事实标准. ...
- (转载)PHP_Memcache函数详解
(转载)http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/04/19/2021605.html memcache函数所有的方法列表如下: M ...
- 暴力求解——最大乘积 Maximum Product,UVa 11059
最大乘积 Maximum Product 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/B 解题思路 ...
- Fragmen横竖屏切换,导致页面混乱,oncreateView重复调用
在清单文件Activity设置属性 android:screenOrientation="landscape" android:configChanges="screen ...
- apt局域网源搭建
1, 准备Packages.gz