网络编程案例

一,概念

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. 以jhtml结尾的文件

    用一个实例来说明,直接上代码. LogonAction.java(一个servlet) package com.lz.web.action; import java.io.IOException; i ...

  2. 使用java的自定义过滤器Filter 处理请求request 并响应response

    package com.enation.eop; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...

  3. jQuery UI-Draggable 参数集合

    ·概述    在任何DOM元素启用拖动功能.通过单击鼠标并拖动对象在窗口内的任何地方移动.    官方示例地址:http://jqueryui.com/demos/draggable/      所有 ...

  4. hdu 4359 dp

    /* 题目大意:给n个节点的二叉树第i个节点的权值为2^(i-1), 求所有含左右子树的节点都符合左子树的权和小于右子树权和的种数. */ #include <iostream> #inc ...

  5. vs 2013 update2无法打开 edmx文件

    解决方案:在edmx文件上右键,选择ado.net entity data model designer,即可正常打开!

  6. 【IDEA】IDEA中部署的项目添加Tomcat自带的一些项目

    在IDEA部署项目的时候发现没有tomcat自带的一些项目,有时候我们需要tomcat自带的项目查看一些配置的信息,经过查阅资料后做记录如下: 1.在Eclipse中点击Run ->Edit C ...

  7. 联合权值(NOIP2014)奇特的模拟。。

    原题传送门 这道题瞄了一眼还以为是SPFA最短路. 后面发现距离为2.. 好像可以枚举中间点来着? 时间效率O(n*(2n-2))≍O(n^2) BOOM!(PS:9018上过了,说明数据太水了..) ...

  8. Linux内存管理图解【转】

    转自:http://www.360doc.com/content/13/0505/15/12218157_283128759.shtml Linux内存管理图解 2013-05-05  果儿的百科   ...

  9. Nginx整合PHP原理

    安装Nginx        在网上,看到不少人装Nginx 时非常麻烦,配置时用了一大堆选项,请问你们真实现那么多功能么?害的我越看越郁闷.此次安装Nginx如果是按着上面笔者的步骤一步步走下来,安 ...

  10. 无法解析的外部符号 "public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)"

    采用下面的方法.重新编译了一下依赖的库,OK了.   问题描述: 今天用VS2010编译一个在VS2008下Coding的工程的时候,VS给出了一堆链接错误信息,如下图所示: 在ErrorList里面 ...