网络编程案例

一,概念

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. 0-1背包问题(经典)HDU2602 Bone Collector

    Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. ubuntu上安装ffmpeg

      安装包和主要步骤: 1. 首先安装系统基础环境 RHEL & CentOS 系列:yum install -y automake autoconf libtool gcc gcc-c++ ...

  3. linux低权限执行高权限

    1.关于sudo不需要输密码,低权限执行高权限,在root下的命令visudo放开%wheel ALL:保存退出, 执行gpasswd -a yourusername wheel 2.脚本命令下的,权 ...

  4. Git 新项目关联到远程仓库

    最近前端学到小有成果,准备写一个新项目放在githup,结果没有提前在仓库创建项目,现在我把写好的项目推送到远程gitHup 1.先初始化本地仓库 Git init : 这样在项目里面都创建了一个隐藏 ...

  5. VC++中有关句柄和指针及其转换(转)

    原文转自 https://blog.csdn.net/jearmy/article/details/47030011 1.MFC窗口的句柄和指针的转换 (1) 一般窗口对象都会有一个其对应的句柄变量, ...

  6. electron 安装使用

    1.安装 node.js 链接:http://pan.baidu.com/s/1o7W7BIy 密码:y6od 一路next 我安装在F:\Program Files\node.js下 2.检查nod ...

  7. Hbase delete遇到的常见异常: Exception in thread "main" java.lang.UnsupportedOperationException

    hbase 执行批量删除时出现错误: Exception in thread "main" java.lang.UnsupportedOperationException at j ...

  8. IFC and BFC

    BFC and IFC 1,IFC -- 针对行内元素 -- 行内格式上下文 BFC --针对块级元素 -- 块级格式上下文 2,IFC特点: 行框的高度由包含元素的高度和有没有float元素决定. ...

  9. hdu 1102(最小生成树)

    Constructing Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  10. ubuntu for windows10设置中文

    运行 sudo dpkg-reconfigure locales ,第一个界面是选择区域,找到后面的zh_CN.UTF-8 UTF-8,回车确认,第二个界面是选择语言,选择zh_CN.UTF-8,回车 ...