网络编程案例

一,概念

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. myeclipse maven web项目配置

    启用maven:window-->preference-->MyEclipse-->Maven4MyEclipse, 勾选复选框(Enable Mave4MyEclipse feat ...

  2. 蓝萝卜blu netty3升netty4

    老项目是netty3的,本来想直接改到netty5,但是netty5居然是只支持jdk1.7,很奇怪jdk1.6和jdk1.8都不行..为了兼容jdk1.6加上netty4本来和netty5就差别不大 ...

  3. Computer(hdu 2196)

    题意:给出一棵树,求出每个点与距离它最远的点的距离. /* 树形DP 先把无根树转为有根树,对于一个节点i来说,与它相距最远的点有两种可能,一是在它的子树中,二是不在,我们分别用f[i][0]和f[i ...

  4. RQNOJ 34 紧急援救

    题目描述 话说2007年8月5日,Mike博士神秘失踪了,最后发现是被外星人绑架了,幸好外星人目前还是在地球上活动,并且知道外星人不了解地球,幸好,Milk博士身上有无线信号发送装置,我们终于确定了他 ...

  5. AtCoder Grand Contest 018 A

    A - Getting Difference Time limit時間制限 : 2sec / Memory limitメモリ制限 : 256MB 配点 : 300 点 問題文 箱に N 個のボールが入 ...

  6. struts2中的文件上传和文件下载

    单文件文件上传 1.

  7. jsp的九大内置对象及EL表达式的隐含对象

    九大内置对象: request         request对象具有请求域,即完成客户端的请求之前,该对象一直有效. response       response对象具有页面作用域,即访问一个页面 ...

  8. oracle odbc 驱动安装(不安装oracle客户端)

    1.下载odbc驱动 需要下载两个东西 instantclient-basiclite-nt-12.1.0.1.0.zip instantclient-odbc-nt-12.1.0.1.0.zip 由 ...

  9. bzoj 3289 Mato的文件管理 区间逆序对数(离线) 莫队

    题目链接 题意 给定\(n\)个数,\(q\)个询问,每次询问\([l,r]\)区间内的逆序对数. 思路 莫队+树状数组 注意离散化 Code #include <bits/stdc++.h&g ...

  10. 前端设计的常用属性,CSS的盒模型,页面布局的利器

    在CSS和HTML结合布局页面的过程中,有一组被人们称为“盒属性”的CSS样式,被广泛的使用到.相信经常布局写页面的朋友们对盒属性一定不陌生.在CSS技术的发展过程中,盒属性也有了许多次改进,今天小编 ...