Java 学习之网络编程案例
网络编程案例
一,概念
1,网络编程不等于网站编程
2,编程只和传输层打交道,即TCP和UDP两个协议
二,案例
1,TCP实现点对点的聊天
Server端:两个输入流:读客户端和控制台,一个输出端:输出客户端
public class ChatServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket=new ServerSocket(44432);
Socket socket=serverSocket.accept();//获取客户端的连接信息
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));//client 的输入内容
PrintWriter printWriter =new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//往client输出内容
System.out.println("client say:"+bufferedReader.readLine());
Scanner bufferedReader1=new Scanner(System.in);//控制台输入内容
String message=bufferedReader1.next();
while(!message.equals("end")) {
printWriter.println(message);//send message to client
printWriter.flush();
System.out.println("client say:"+bufferedReader.readLine());// get message from client
message=bufferedReader1.next();
}
bufferedReader.close();
printWriter.close();
bufferedReader1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Client端:两个输入流:读服务端和控制台,一个输出端:输出服务端
public class ChatClient {
public static void main(String[] args) {
try {
Socket socket=new Socket("127.0.0.1",44432);//获取服务端的唯一标识
PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//BufferedWriter流也可以
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader bufferedReader1=new BufferedReader(new InputStreamReader(System.in));
String message=bufferedReader1.readLine();
while (!message.equals("end")){
printWriter.write(message+"\r\n");//加\r\n,因为读取时是用readLine方式 ,等同于println方式
printWriter.flush();//必须flush,不然另一端读不到。。。
System.out.println("server say:"+bufferedReader.readLine());
message=bufferedReader1.readLine();
}
bufferedReader.close();
bufferedReader1.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2,UDP 实现高精度数字传输 通过数据报形式
接收端:
public class UdpServer {
public static void main(String[] args) {
byte[] buf=new byte[1024];//存储接受数据报的容器
DatagramPacket datagramPacket=new DatagramPacket(buf,buf.length);//数据报内容写入容器
try {
DatagramSocket datagramSocket=new DatagramSocket(44423);
while (true){
datagramSocket.receive(datagramPacket);//接收发送方的数据报
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(buf);
DataInputStream dataInputStream=new DataInputStream(byteArrayInputStream);
System.out.println("clint say:"+dataInputStream.readDouble());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
发送端:
public class UdpClient {
public static void main(String[] args) {
double n=10000.00;
try {
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
DataOutputStream dataOutputStream=new DataOutputStream(byteArrayOutputStream);
dataOutputStream.writeDouble(n);
//创建代有数据报内容和目的地址
DatagramPacket datagramPacket=new DatagramPacket(byteArrayOutputStream.toByteArray(),
byteArrayOutputStream.toByteArray().length,new InetSocketAddress("127.0.0.1",44423));
DatagramSocket datagramSocket=new DatagramSocket(53421);//指定发送的端口
datagramSocket.send(datagramPacket);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java 学习之网络编程案例的更多相关文章
- Java学习之网络编程实例
转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...
- Java学习:网络编程总结
Java网络编程总结 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备( ...
- Java学习笔记-网络编程
Java提供了网络编程,并且在实际中有着大量运用 网络编程 网络编程概述 网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 IP地址 ...
- Java学习之网络编程
转自:http://blog.csdn.net/driverking/article/details/6573992 一.网络编程基本概念 1.OSI与TCP/IP体系模型 2.IP和端口 解决了文章 ...
- Java 学习笔记 网络编程 使用Socket传输文件 CS模式
Socket的简单认识 Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点. Socket是连接 ...
- java学习笔记 --- 网络编程(套接字)
1.Socket通信原理 Socket套接字概述: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. 通信的两端都有Socket. 网络通信其实就是Socket间的通信 ...
- java学习笔记 --- 网络编程(网络的基础知识)
1.网络模型: |--OSI(open stystem Interconnection开放式系统互连) |--特点: 是一种异构系统互连的分层结构:提供了控制互连系统交互规则的标准骨架:定义一种抽象结 ...
- 深入学习socket网络编程,以java语言为例
了解java的socket编程与Linux Socket API之间的关系 一.java的网络编程 1.socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信.主机A的应用 ...
- Java进阶之网络编程
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...
随机推荐
- 异或值 xor
题目描述 给出一个 N 个点的带权无向图,要求从 1 号点到 N 号点的一条路径,使得路径上的边 权异或值最大. 输入格式 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M ...
- DP———7.导弹拦截(emmm冷静分析一波也不叫DP吧,不过有一种DP的方法写)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- Educational Codeforces Round 42 (Rated for Div. 2) C
C. Make a Square time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- 蓝萝卜blu netty3升netty4
老项目是netty3的,本来想直接改到netty5,但是netty5居然是只支持jdk1.7,很奇怪jdk1.6和jdk1.8都不行..为了兼容jdk1.6加上netty4本来和netty5就差别不大 ...
- BeeFramework 笔记 四(UISignal 总结)
http://yang152412.blog.163.com/blog/static/175861582201332321351862/ 一.UISignal的工作模式 1.发送Signal,比如从V ...
- python 错误 error: invalid command 'egg_info'
Processing /bs4-0.0.1/setuptools-38.4.0/numpy-1.14.0 Complete output from command python setup.py ...
- ffmpeg muxer 参数简要说明
参数 值 说明 movflags MP4 Muxer 标记 rtphint 增加RTP的hint track empty_moov 初始化空的moov box frag_keyframe 在视频关键帧 ...
- Mongodb的使用(上)
简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 查看官方网站 MongoDB特点 模式自 ...
- CSS浮动属性,知道原理就很简单,灵活控制块级元素在一行内显示
在页面布局中,有两个非常常用的CSS属性.它们巧妙的控制着块级元素们之间的位置,灵活的让块级元素在一行内显示或者另起一行.说到这里,相信大家已经猜出来了,这两个属性就是控制块级元素浮动的属性.整个页面 ...
- HDU 2063.过山车-Hungary(匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...