Java关于网络编程回顾
一、Java网络编程三要素:
1、IP地址:是要确定发送的地址,IP地址一般分为5类。
2、端口:要确定发送的程序是哪一个,端口的范围是0--65535,其中0-1024是系统使用或保留端口
3、协议:发送数据的方式,分为UDP和TCP
二、UDP协议发送接收数据:
1、数据需要打包
2、数据大小有限制,最大64K
3、不需要建立连接
4、速度快
5、是不可靠协议
网络编程为分发送端和接收端。
发送端:
class UdpSendDemo{
public static void main(String[] args) throws IOException {
//创建Socket发送端对象
DatagramSocket ds = new DatagramSocket();
//创建数据
byte[] bys = "我来了".getBytes();
//长度
int length = bys.length;
//IP地址
InetAddress address= InetAddress.getByName("192.168.10.89");
//端口号
int port = 10086;
//数据打包
DatagramPacket dp = new DatagramPacket(bys,length,address,port);
//用socket对象发送数据包
ds.send(dp);
//关闭资源
ds.close();
}
}
根据发送端的代码可总结UDP发送端步骤为:
1、首先建立Socket对象:DatagramSocket
2、将数据进行打包:DatagramPacket(bys,bys.length,InetAddress.getByName("192.168.10.10"),port)
3、Socket对象发送数据
4、关闭Socket对象。
接收端:
public UdpReceiveDemo{
public static void main(String[] args){
//建立接收端Socket对象
DatagramSocket ds = new DatagramSocket(10086);
//接收数据首先创建个容器/数据包
byte[] bys = new byte[1024];
//长度
int length = bys.length;
//创建数据包
DatagramPacket dp = new DatagramPacket(bys,length);
//调用Socket对象接收数据包
ds.receive(dp);//阻塞式
//解析数据包
InetAddress address = dp.getAddress();
int ip = address.getHostAddress();
byte[] bys2= dp.getDate();
int len = dp.getLength();
String s = new String(bys2,0,len);
//输出到控制台
System.out.println(ip+"传送的数据是"+s);
//释放资源
ds.close();
}
}
根据接收端代码可总结UDP接收端的步骤为:
1、建立接收端对象:DatagramSocket(port)
2、创建一个容器:DatagramPacket(bys,bys.lenth)
3、使用接收端对象接收这个容器
4、数据解析 int ip = dp.getAddress().getHostAddress(); String s = new String(dp.getDate(),0,dp.getLength());
5、释放资源
三、UDP协议多线程发送和接收数据
1、多线程实现发送端
public class sendThread implements Runnable{
public DatagramSocket ds;
public sendThread (DatagramSocket ds){
this.ds=ds;
}
//重写run方法
@override
public void run(){
try{
//接收键盘录入数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while(line=br.readLine!=null){
if line.equals("886"){
break;
}
//将数据打包并发送
byte[] bys = line.getBytes();
DatagramSocket ds = new DategramSocket(bys,bye.length,InetAddress.getByName("192.168.10.10",12306));
ds.send(dp);
}
ds.close();
}catch(IOExpection e){
e.printStackTrace();
}
}
}
2、多线程实现接收端
public class ReceiveThraed implements Runnable{
public DatagramSocket ds;
public ReceiveThraed (DatagramSocker ds){
this.ds=ds;
}
@override
public void run(){
try{
while(true){
//创建容器
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket (bys,bys.length);
//接收数据
ds.receive(dp);
//解析数据
int ip = dp.getAddress().getHostAddress();
String s = new String(dp.getDate(),0,dp.getLength());
}catch(IOException e){
e.printStackTrace();
}
}
}
}
3、多线程实现
DatagramSocket dsSend = new DatagramSocket();
DatagramSocket dsReceive = new DatagramSocket(12306);
SendThread st = new SendThread(dsSend);
ReceiveThread rt = new ReceiveThread(dsReceive);
Thread t1 = new Thread(st);
Thread t2 = new Thread(rt);
t1.start();
t2.start();
四、TCP接收发送数据
1、建立连接
2、支持大数据传输
3、安全可靠
发送端:
public class SendDemo{
public static void main(String[] args){
//建立Socket对象
Socket s = new Socket("192.168.10.10",8888);
//获取输出流写数据
OutputStream os =s.getOutputStream();
os.write('"我来了".getBytes());
//释放资源
s.close();
}
}
接收端:
public class ReceiveDemo{
public static void main(String[] args){
//创建接收端的Socket对象
ServerSocket ss = new ServerSocket(8888);
//监听客户端连接。返回一个对应的Socket对象
Socket s = ss.accept();
//获取输入流
InputStream is = s.getInputStream(); byte[] bys = new byte[1024];
int len = is.read(bys);
String s = new String(bys,0,len);
String ip = s.getInetAddress().getHostAddress(); s.close();
}
}
Java关于网络编程回顾的更多相关文章
- 二十三、Java基础--------网络编程
Java中另一个重要技术就是网络编程了,为了更好的学习web方向的知识,有必要对java之网络编程好好学习,本文将围绕网络编程技术进行分析. 常见的网络协议:UDP.TCP UDP 1. 将数据源和目 ...
- JAVA的网络编程
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...
- Java Socket 网络编程心跳设计概念
Java Socket 网络编程心跳设计概念 1.一般是用来判断对方(设备,进程或其它网元)是否正常动行,一 般采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经当掉.用于 ...
- 20145325张梓靖 实验五 "JAVA的网络编程"
20145325张梓靖 实验五 "JAVA的网络编程" 实验内容 使用 JVAV语言 进行网络编程 对明文进行加密 设计过程 我完成的是客户端,服务端同伴 20145308刘昊阳 ...
- 【转】JAVA之网络编程
转自:火之光 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者 ...
- JAVA的网络编程【转】
JAVA的网络编程[转] Posted on 2009-12-03 18:04 火之光 阅读(93441) 评论(20) 编辑 收藏 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能, ...
- Java面向对象 网络编程 下
Java面向对象 网络编程 下 知识概要: (1)Tcp 练习 (2)客户端向服务端上传一个图片. (3) 请求登陆 (4)url 需求:上传图片. 客户端: ...
- Java面向对象 网络编程 上
Java面向对象 网络编程 上 知识概要: (1)网络模型 (2)网络通讯要素 (3)UDP TCP 概念 (4)Socket (5)UDP TCP 传输 ...
- Java基础——网络编程(二)
一.套接字 Socket 网络驱动程序提供给应用程序编程的接口和一种机制,可以比喻成一个港口码头 应用程序只要把货放在这,就算完成了货物的运送.它在应用程序中创建,通过一种绑定机制与驱动程序建立关系, ...
随机推荐
- bzoj1683[Usaco2005 Nov]City skyline 城市地平线
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1683 Input 第1行:2个用空格隔开的整数N和W. 第2到N+1行:每行包括2个用空格 ...
- BZOJ.4034 [HAOI2015]树上操作 ( 点权树链剖分 线段树 )
BZOJ.4034 [HAOI2015]树上操作 ( 点权树链剖分 线段树 ) 题意分析 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 ...
- BZOJ.1036 [ZJOI2008]树的统计Count ( 点权树链剖分 线段树维护和与最值)
BZOJ.1036 [ZJOI2008]树的统计Count (树链剖分 线段树维护和与最值) 题意分析 (题目图片来自于 这里) 第一道树链剖分的题目,谈一下自己的理解. 树链剖分能解决的问题是,题目 ...
- JS的作用域和闭包
1.作用域 作用域是根据名称找变量的一套规则. 变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域中查找该变量,如果能够找到就会对它 ...
- 解题:洛谷4721 [模板]分治FFT
题面 这是CDQ入门题,不要被题目名骗了,这核心根本不在不在FFT上啊=.= 因为后面的项的计算依赖于前面的项,不能直接FFT.所以用CDQ的思想,算出前面然后考虑给后面的贡献 #include< ...
- ASP.NET MVC3 入门指南之数据验证[源码RAR下载]
http://www.cnblogs.com/BingoLee/archive/2011/12/23/2298822.html 前言: 无论你编写什么样的网页程序,都需要对用户的数据进行验证,以确数据 ...
- 如何获取codeforces的完整数据?(玄学方法)
做cf题总是wa,wa了以后还没发看完整数据,好气哦! 怎么办? 这其实非常简单 首先看一下wa的那个数据有什么特点 比如说n = 1111,m = 1111 那么就if(n == 1111 & ...
- Centos7.2安装tomcat+Myeclipse(遇到的一些问题与总结)+web项目实战
工作环境:centos7.2 PS:没有耐心的同学可以直接跳到后面的安装方法,对于安装方法大多是网上的,我只是做相关收集和总结 给个tomca和Myeclipset折腾的半死,现在做一些总结1.一定要 ...
- vi的一些使用技巧
1.vi 编辑器中跳到文件的第一行:键盘按下 小写 gg vi 编辑器跳到文件最后一行:键盘按 shift + g (等于G) 跳转到当前行的第一个字符按0,跳转到当前行的最后一个字符按shift ...
- haproxy做TCP层的负载均衡
最新项目中发现,大量游戏玩家访问登录服务器时出现延迟,导致玩家无法登录,愿意可能是登录服务器性能达到极限. 所以目前想通过proxy的方式访问登录服务器集群,避免登录延迟. 1.下载haproxy最新 ...