网络编程案例

一,概念

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 学习之网络编程案例的更多相关文章

  1. Java学习之网络编程实例

    转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...

  2. Java学习:网络编程总结

    Java网络编程总结 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备( ...

  3. Java学习笔记-网络编程

    Java提供了网络编程,并且在实际中有着大量运用 网络编程 网络编程概述 网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 IP地址 ...

  4. Java学习之网络编程

    转自:http://blog.csdn.net/driverking/article/details/6573992 一.网络编程基本概念 1.OSI与TCP/IP体系模型 2.IP和端口 解决了文章 ...

  5. Java 学习笔记 网络编程 使用Socket传输文件 CS模式

    Socket的简单认识 Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点. Socket是连接 ...

  6. java学习笔记 --- 网络编程(套接字)

    1.Socket通信原理 Socket套接字概述: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. 通信的两端都有Socket. 网络通信其实就是Socket间的通信 ...

  7. java学习笔记 --- 网络编程(网络的基础知识)

    1.网络模型: |--OSI(open stystem Interconnection开放式系统互连) |--特点: 是一种异构系统互连的分层结构:提供了控制互连系统交互规则的标准骨架:定义一种抽象结 ...

  8. 深入学习socket网络编程,以java语言为例

    了解java的socket编程与Linux Socket API之间的关系 一.java的网络编程 1.socket原理 socket通信就是通过IP和端口号将两台主机建立连接,提供通信.主机A的应用 ...

  9. Java进阶之网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

随机推荐

  1. Educational Codeforces Round 42 (Rated for Div. 2) A

    A. Equator time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  2. visual studio 2005 win7 64位版下载

    http://www.121down.com/soft/softview-19659.html 软件标签: visual studio visual studio 2005是由微软推出的一款基于.ne ...

  3. sql多对多探讨

    --用sql语句探讨一对多 多对多关系 /**** 你有3个表  学生表(学生id 学生姓名) 课程表(课程id 课程名) 成绩表 (学生id 课程id 分数) 班级表(班级id 学生id) 这里的班 ...

  4. poj 1265&&poj 2954(Pick定理)

    Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5811   Accepted: 2589 Description ...

  5. 全文索引CONTAINS语法

    Like直接在数据据中查找可以查到所有所需记录但是会扫描整个表会影响性能CONTAINS是基于全文索引进行查询,查询结果受系统全文索引分词的方法影响查询结果会不全.Select * FROM A Wh ...

  6. Openstack ceilometer

    https://www.cnblogs.com/liguangsunls/p/6879879.html

  7. 树上各种DFS姿势算法笔记

    树是指由n个点,n-1条边构成的联通无向图.如果有一棵树,它的每一条边(u,v)都有一个权值l(u,v),我们把这样的树称作带权树. 我们知道对于树上的任意两个点,他们之间的路径是唯一的.对于两个点u ...

  8. 51nod 1094 和为k的连续区间【前缀和/区间差/map】

    1094 和为k的连续区间 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 一整数数列a1, a2, ... , an(有正有负),以及另一个整数k ...

  9. POJ 1298 The Hardest Problem Ever【字符串】

    Julius Caesar lived in a time of danger and intrigue. The hardest situation Caesar ever faced was ke ...

  10. JQuery里面的知识

    JQuery是一个javaScript库 JQuery极大的简化了javaScript编程 通过点击 "TIY" 按钮来看看它是如何运行的. 演示JQuery的hide函数,隐藏了 ...