// TODO Auto-generated method stub

//获取本地主机IP对象

InetAddress ip = InetAddress.getLocalHost();

System.out.println(ip.getHostAddress());

System.out.println(ip.getHostName());

//获取其他主机ip地址对象

ip = InetAddress.getByName("www.sina.com");

System.out.println(ip.getHostAddress());

System.out.println(ip.getHostName());



通讯的两端


UDP建立

System.out.println("发送端启动--------------------------------");

/*

* 创建UDP传输的发送端。

* 思路:

* 1.建立udp的socket服务。

* 2.将要发送的数据进行封装到数据包中。

* 3.通过udp的socket服务将数据包发送过去。

* 4.关闭socket服务。

*/

//1.udpsocket服务,使用DatagramSocket对象。

DatagramSocket ds = new DatagramSocket();

//2.将要发送的 数据进行封装到数据保种。

String str = "嗨。哥们是杨超!!!";

//使用DatagramPacket将数据封装到该对象中。

byte[] buf = str.getBytes();

DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 10000);

//3.通过UDP的socket服务将数据包发送出去。  使用send方法

ds.send(dp);

//关闭资源

ds.close();

---------------------------------------------------------------------------------------------------------

System.out.println("接受端启动-----------------------------------");

/*

* 建立UDP接受端的思路:

* 思路:

* 1.建立udp socket服务。   因为是要接受数据   所以  必须要明确一个端口号。。。。****

* 2.创建数据包,用存储接收到的数据。方便使用数据包对象的方法解析这些数据。

* 3.使用socket服务的receive方法将接收到的数据存储到数据包中。

* 4.通过数据包的方法解析数据包中的数据。

* 5.关闭资源。

*/

//1.建立udp socket服务。

DatagramSocket ds = new DatagramSocket(10000);

//创建数据包

byte[] buf = new byte[1024];

DatagramPacket dp = new DatagramPacket(buf, buf.length);

//3.使用接受方法将数据包存储到数据包中。

ds.receive(dp);//阻塞式的方法*********

//4.通过数据包对象的方法。  解析其中的数据,比如  地址,端口, 数据内容。

String ip = dp.getAddress().getHostAddress();

int port = dp.getPort();

String text = new String(dp.getData(), 0, dp.getLength() );

System.out.println(text);

ds.close();

=================================================================================

//服务器端接收客户端发送过来的数据, 并打印在控制台上。

/*

* 建立tcp服务器端的思路:

* 1.创建服务器socket服务,通过ServerSocket对象。

* 2.服务端必须对外提供一个端口,否则客户端无法连接。

* 3.获取链接过来的的客户端对象。

* 4.通过客户端对象获取socket流读取客户端发来的数据。并打印在控制台上。

* 5,关闭资源,关闭客户端资源,关闭服务器段资源。

*/

//1.创建服务器对象。

ServerSocket ss = new ServerSocket(100002);

//2获取连接过来的客户端对象。

Socket s = new Socket();

String ip = s.getInetAddress().getHostAddress();

//3通过socket对象获取输入流,  尧都区客户端发来的数据。

InputStream in = s.getInputStream();

byte[] buf = new byte[1024];

int len = in.read(buf);

String text = new String(buf, 0, len);

System.out.println(ip + ":" + text);

s.close();

---------------------------------------------------------------------------------------------

/*

*

*

*

*/

//创建客户端socket服务。

Socket socket = new Socket("127.0.0.1", 10002);

//获取socket流中的输出 流

OutputStream out = socket.getOutputStream();

//使用输出流将指定的数据写出去。

out.write("我是杨超,我正在学习java!".getBytes());

//关闭资源

socket.close();

====================================================================================

/*

* 思路:

* 客户端:

* 1.需要创建socket端点。

* 2,客户端的数据源:键盘:

* 3.客户端的目的:  socket

* 4.接收服务器的数据,  源:socket

* 5,将数据显示在打印出来,  目的:  控制台。

* 6.在这些流中操作数据,都是文本数据。

*

* 转换客户端:

* 1.创建socket客户端对象。

* 2.获取键盘录入,

* 3.将录入的信息 发送给socket输出流。

*/

//1.创建  socket  客户端对象。

Socket s = new Socket("127.0.0.1", 10004);

//2.获取键盘录入。

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

//3socket输出流

PrintWriter out = new PrintWriter(s.getOutputStream(), true);

//4.socket输入流,  读取服务器端返回的大写数据

BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

String line = null;

while((line=bufr.readLine()) != null)

{

if("over".equals(line))

{

break;

}

out.println(line);

//读取服务器端返回的  一行大写

String upperStr = bufIn.readLine();

System.out.println(upperStr);

}

s.close();

}

-------------------------------------------------------------------------------------------------------

/*

* 服务器端:

* 转换分析:

* 1.serversocket服务。

* 2.获取socket对象。

* 3.源:  socket 读取客户端发过来的需要转换的数据。

* 4.目的:  显示 在控制台上,

* 5.将数据装换成大写  发给客户端。

*/

//1.获取serversocket对象 。

ServerSocket ss = new ServerSocket(10004);

//2.获取socket对象。

Socket s = ss.accept();

//获取ip

String ip = s.getInetAddress().getHostAddress();

System.out.println(ip+"连接进来了!!");

//3.获取socket 读取流。  并装饰。

BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

//4.获取socket的输出流 。 并装饰。

PrintWriter out = new PrintWriter(s.getOutputStream(), true);

String line = null;

while((line=bufIn.readLine()) != null)

{

System.out.println(line);

out.println(line.toUpperCase());

}

s.close();

ss.close();

========================================================================================================

/*服务器端:  上传文本文件

*

*/

ServerSocket ss = new ServerSocket(10005);

Socket s = ss.accept();

BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

BufferedWriter bufw = new BufferedWriter(new FileWriter("server.txt"));

String line = null;

while((line=bufIn.readLine()) != null)

{

//
if("over".equals(line))

//
break;

bufw.write(line);

bufw.newLine();

bufw.flush();

}

PrintWriter out = new PrintWriter(s.getOutputStream(), true);

out.println("上传成功@!");

bufw.close();

s.close();

ss.close();

-------------------------------------------------------------------------------

/*

* 客户端:   上传文本文件。

*

*/

Socket s = new Socket();

BufferedReader bufr = new BufferedReader(new FileReader("xx.text"));

PrintWriter out = new PrintWriter(s.getOutputStream(), true);

String line = null;

while((line=bufr.readLine()) != null)

{

out.println(line);

}

//数据写完后  告诉服务器端

//
out.println("over");

s.shutdownOutput();

BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

String str = bufIn.readLine();

System.out.println(str);

bufr.close();

s.close();

======================================================================================================

上传图片

public class UploadPicServer

{

public static void main(String[] args) throws IOException

{

/*服务器端:   图片上传:

*

*/

//1.创建socket服务端:

ServerSocket ss = new ServerSocket(10006);

while(true)

{

//2.获取客户端:

Socket s = ss.accept();

new Thread(new UpLoadTest(s)).start();

}

}

}

class UpLoadTest implements Runnable

{

private Socket s;

public UpLoadTest(Socket s)

{

this.s = s;

}

@Override

public void run()

{

// TODO Auto-generated method stub

//3.读取客户端发来的数据

try

{

InputStream in = s.getInputStream();

//4.将读取到的数据 存储到  一个文件中。

FileOutputStream fos = new FileOutputStream("server.jpg");

byte[] buf =  new byte[1024];

int len = 0;

while((len=in.read(buf)) != -1)

{

fos.write(buf, 0, len);

}

//获取socket输出流   将上传信息情况  发送给客户端。

OutputStream out  = s.getOutputStream();

out.write("上床成功!".getBytes());

fos.close();

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

finally

{

try

{

s.close();

}

catch (IOException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

----------------------------------------------------------------------------------------------------------------------------------------

/*  客户端: 上传图片

*

*/

//1.创建  客户端socket

Socket s = new Socket("127.0.0.1", 10006);

//2.读取客户端要上传的文件

FileInputStream fis = new FileInputStream("1.jpg");

//3.获取socket输出流,  将读到的的数据  发送给服务端。

OutputStream out = s.getOutputStream();

byte[] buf = new byte[1024];

int len=0;

while((len=fis.read(buf)) != -1)

{

out.write(buf, 0, len);

}

//告诉服务器端这边的 数据发送完毕

s.shutdownOutput();

//获取服务器端     返回给客户端的信息:

InputStream in = s.getInputStream();

byte[] bufIn = new byte[1024];

int lenIn = in.read(bufIn);

String text = new String(buf, 0, lenIn);

System.out.println(text);

fis.close();

s.close();






版权声明:本文为博主原创文章,未经博主允许不得转载。

Java——网络编程的更多相关文章

  1. 20145205 《Java程序设计》实验报告五:Java网络编程及安全

    20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...

  2. Java 网络编程学习总结

    新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1]    网络编程认识                [2]  TCP/IP编程 ...

  3. 20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容 1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成 ...

  4. 20145213《Java程序设计》实验五Java网络编程及安全

    20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...

  5. 20145206《Java程序设计》实验五Java网络编程及安全

    20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...

  6. 20145337实验五Java网络编程及安全

    20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...

  7. java 网络编程复习(转)

    好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942 ...

  8. JAVA课程实验报告 实验五 Java网络编程及安全

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  9. 20145225《Java程序设计》 实验五 Java网络编程及安全

    20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...

  10. Java 网络编程----基本概念

    网络现在是一个非常普遍的概念. 以下是维基百科上的解释: 网络一词有多种意义,可解作: 网络流也简称为网络(network).一般用于管道系统.交通系统.通讯系统建模. 有时特指计算机网络. 或特指其 ...

随机推荐

  1. 理解 Neutron Server 分层模型 - 每天5分钟玩转 OpenStack(69)

    本节开始讨论 Neutron 的各个服务组件,首先学习 Neutron Server . 上图是 Neutron Server 的分层结构,至上而下依次为: Core API对外提供管理 networ ...

  2. 学会Git玩转Github

    1. 了解Git和Github 1.1 什么是Git Git是一个免费.开源的版本控制软件 1.2 什么是版本控制系统 版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况得系统. ...

  3. Grouping Sets:CUBE和ROLLUP从句

    在上一篇文章里我讨论了SQL Server里Grouping Sets的功能.从文中的例子可以看到,通过简单定义需要的分组集是很容易进行各自分组.但如果像从所给的列集里想要有所有可能的分布——即所谓的 ...

  4. 如何解决mysql stop fail的问题

    最近在学习mysql,碰到了一个mysql stop fail的问题,在这里把碰到的问题以及解决的过程写出来,不是这个问题有多难,而是我在解决此问题的过程中没有发现一个行之有效的解决问题的中文网页,搞 ...

  5. MS SQLService中的*= 及 =*

    今天看到数据库中的存储过程中,有*= ,于是百度了一下,原来这个SQL2000以前的左连接,以后的版本中开启兼容也是可以用的. 于是拿出来在系统中的表中测试了一下果然如此 例: 有用户表D_user及 ...

  6. 魅族5.0以上设备(亲测有效)激活Xposed框架的流程

    对于喜欢研究手机的哥们来说,大多时候会使用到Xposed框架及种种功能强大的模块,对于5.0以下的系统版本,只要手机能获得ROOT权限,安装和激活Xposed框架是比较简单的,但随着系统版本的持续更新 ...

  7. 外部访问docker容器(docker run -p/-P 指令)

    容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P(大写) 或 -p (小写) 参数来指定端口映射. (1)当使用 -P 标记时,Docker 会随机映射一个 49000~4990 ...

  8. 解决Fiddler查看Post参数中文乱码的问题

    解决Fiddler查看Post参数中文乱码的问题 解决方法: 1.win+R 2.打开注册表编辑器:输入regedit +回车+是 3.HKEY_CURRENT_USER\Software\Micro ...

  9. 互联网同步yum服务器,中科大 rsync createrepo

    参考文章 https://blog.csdn.net/chenjia6605/article/details/82734945 1.本机安装所需工具: yum -y install rsync cre ...

  10. Maven为不同环境配置打包

    在开发过程中经常要遇到为不同的环境打包,这里面最主要的问题在于,不同环境的配置是不一样的,如果为不同环境打包每次都手工修改配置,那不但工作量大,而且很容易出错.如果用ant的话,用变量加上replac ...