Java——网络编程
// 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());
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——网络编程的更多相关文章
- 20145205 《Java程序设计》实验报告五:Java网络编程及安全
20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...
- Java 网络编程学习总结
新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1] 网络编程认识 [2] TCP/IP编程 ...
- 20145212 实验五《Java网络编程》
20145212 实验五<Java网络编程> 一.实验内容 1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成 ...
- 20145213《Java程序设计》实验五Java网络编程及安全
20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...
- 20145206《Java程序设计》实验五Java网络编程及安全
20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...
- 20145337实验五Java网络编程及安全
20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...
- java 网络编程复习(转)
好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942 ...
- JAVA课程实验报告 实验五 Java网络编程及安全
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225《Java程序设计》 实验五 Java网络编程及安全
20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...
- Java 网络编程----基本概念
网络现在是一个非常普遍的概念. 以下是维基百科上的解释: 网络一词有多种意义,可解作: 网络流也简称为网络(network).一般用于管道系统.交通系统.通讯系统建模. 有时特指计算机网络. 或特指其 ...
随机推荐
- JS事件大全
橙色表示“非常常用” 绿色表示“常用” onClick IE3|N2|O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDblClick IE4|N4|O 鼠标双击事件 onMouseD ...
- 关押罪犯(noip2010)
解法: (1)搜索(30分) (2)二分(此题属于最大值最小问题) (3)贪心+并查集 下面着重说一下“贪心+并查集” 因为有A.B两座监狱,每个犯人不是在A,就是在B监狱. 至于每个犯人在那个监狱, ...
- D.T SOFTWARE (1) 软件架构直播答疑课程
今晚的d.t课程 1项目需求 PPTP服务搭建完成PPTP服务器的搭建,用户重新拨号获得新IP后,要求拔PPTP VPN成功时,也获取到新的公网IP,而且能通过代理上网.VNC服务安装用户可以通过VN ...
- JS监听关闭浏览器事件
Onunload与Onbeforeunload Onunload,onbeforeunload都是在刷新或关闭时调用,可以在<script>脚本中通过window.onunload来指定或 ...
- Bochs使用说明
简介 关于Bochs的介绍:http://en.wikipedia.org/wiki/Bochs Bochs的官网:http://bochs.sourceforge.net/ 这里记录如何在Windo ...
- 产生冠军 map 的 应用 .
开始 比赛 , 每一次的 比赛 都会有人失败 , 如果产生英雄的话 , 那就是产生 唯一一个 没有被打败的人 , 就是英雄, . #include<stdio.h> #includ ...
- Executing modules as scripts
When you run a Python module with python fibo.py <arguments> the code in the module will be ex ...
- C# 线程问题
一:概述和概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线程&quo ...
- ORM和Hibernate的配置方式
分层体系结构: 逻辑上一般分为三层:表述层(提供与用户交互的界面).业务逻辑层(实现各种业务的逻辑).数据库层(负责存放和管理应用的持久性业务数据). 物理上一般分为两层:物理层(每一层都运行在网络上 ...
- HDU4055 - number string(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4055 思路:dp[i][j]表示处理前i个字符以j结尾可能的序列数. 当a[i]=='I'时,dp[i ...