- 浏览: 458601 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuan_bin1990:
您好,请问下demo如何运行啊,准备研究研究,但不知道入口啊。 ...
ssh2(struts2+spring2.5+hibernate3.3)自动生成代码程序 -
luyulong:
[b][/b][i][/i][ ...
jQuery进度条插件 jQuery progressBar -
txin0814:
mark..
读取文件目录 -
vurses:
[align=center][color=red][size= ...
include 与 jsp:include区别 -
Roshan2:
http://lijiejava.iteye.com/blog ...
Spring AOP 入门实例
(1)Server端
- import java.io.BufferedInputStream;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class Server{
- //ServerSocket监听的端口,等待客户连接请求,客户连接后,会话产生,在完成会话后,关闭连接。
- int port = 8821;
- void start() {
- Socket s = null;
- try {
- //在连接成功时,应用程序两端都会产生一个Socket实例
- ServerSocket ss = new ServerSocket(port);
- while (true) {
- String filePath = "D:/bars.jar";
- File fi = new File(filePath);
- //Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例
- System.out.println("Ready to accept task!");
- s = ss.accept();
- //s.getInputStream()获得网络连接输入,同时返回一个IutputStream对象实例
- DataInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream()));
- dis.readByte();
- DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)));
- //s.getOutputStream()网络连接输出
- DataOutputStream ps = new DataOutputStream(s.getOutputStream());
- //将文件名及长度传给客户端。
- ps.writeUTF(fi.getName());
- ps.flush();
- ps.writeLong((long) fi.length());
- ps.flush();
- int bufferSize = 8192;
- byte[] buf = new byte[bufferSize];
- while (true) {
- int read = 0;
- if (fis != null) {
- read = fis.read(buf);
- }
- if (read == -1) {
- break;
- }
- ps.write(buf, 0, read);
- }
- ps.flush();
- fis.close();
- s.close(); //关闭socket
- System.out.println("Task over!");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String arg[]) {
- new Server().start();
- }
- }
import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.ServerSocket; import java.net.Socket; public class Server{ //ServerSocket监听的端口,等待客户连接请求,客户连接后,会话产生,在完成会话后,关闭连接。 int port = 8821; void start() { Socket s = null; try { //在连接成功时,应用程序两端都会产生一个Socket实例 ServerSocket ss = new ServerSocket(port); while (true) { String filePath = "D:/bars.jar"; File fi = new File(filePath); //Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例 System.out.println("Ready to accept task!"); s = ss.accept(); //s.getInputStream()获得网络连接输入,同时返回一个IutputStream对象实例 DataInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream())); dis.readByte(); DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath))); //s.getOutputStream()网络连接输出 DataOutputStream ps = new DataOutputStream(s.getOutputStream()); //将文件名及长度传给客户端。 ps.writeUTF(fi.getName()); ps.flush(); ps.writeLong((long) fi.length()); ps.flush(); int bufferSize = 8192; byte[] buf = new byte[bufferSize]; while (true) { int read = 0; if (fis != null) { read = fis.read(buf); } if (read == -1) { break; } ps.write(buf, 0, read); } ps.flush(); fis.close(); s.close(); //关闭socket System.out.println("Task over!"); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String arg[]) { new Server().start(); } }
(2)ClientSocket辅助类
- import java.net.*;
- import java.io.*;
- public class ClientSocket {
- private String ip;
- private int port;
- private Socket socket = null;
- DataOutputStream out = null;
- DataInputStream getMessageStream = null;
- public ClientSocket(String ip, int port) {
- this.ip = ip;
- this.port = port;
- }
- /**
- * 创建socket连接
- * @throws Exception
- */
- public void CreateConnection() throws Exception {
- try {
- socket = new Socket(ip, port);
- } catch (Exception e) {
- e.printStackTrace();
- if (socket != null)
- socket.close();
- throw e;
- }
- }
- /**
- * 往Socket写数据
- * @param sendMessage
- * @throws Exception
- */
- public void sendMessage(String sendMessage) throws Exception {
- try {
- out = new DataOutputStream(socket.getOutputStream());
- if (sendMessage.equals("Windows")) {
- out.writeByte(0x1);
- out.flush();
- return;
- }else {
- out.writeUTF(sendMessage);
- out.flush();
- }
- } catch (Exception e) {
- e.printStackTrace();
- if (out != null)
- out.close();
- throw e;
- }
- }
- /**
- * 从Socket读数据
- * @return
- * @throws Exception
- */
- public DataInputStream getMessageStream() throws Exception {
- try {
- getMessageStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
- return getMessageStream;
- } catch (Exception e) {
- e.printStackTrace();
- if (getMessageStream != null)
- getMessageStream.close();
- throw e;
- }
- }
- public void shutDownConnection() {
- try {
- if (out != null)
- out.close();
- if (getMessageStream != null)
- getMessageStream.close();
- if (socket != null)
- socket.close();
- } catch (Exception e) {
- }
- }
- }
import java.net.*; import java.io.*; public class ClientSocket { private String ip; private int port; private Socket socket = null; DataOutputStream out = null; DataInputStream getMessageStream = null; public ClientSocket(String ip, int port) { this.ip = ip; this.port = port; } /** * 创建socket连接 * @throws Exception */ public void CreateConnection() throws Exception { try { socket = new Socket(ip, port); } catch (Exception e) { e.printStackTrace(); if (socket != null) socket.close(); throw e; } } /** * 往Socket写数据 * @param sendMessage * @throws Exception */ public void sendMessage(String sendMessage) throws Exception { try { out = new DataOutputStream(socket.getOutputStream()); if (sendMessage.equals("Windows")) { out.writeByte(0x1); out.flush(); return; }else { out.writeUTF(sendMessage); out.flush(); } } catch (Exception e) { e.printStackTrace(); if (out != null) out.close(); throw e; } } /** * 从Socket读数据 * @return * @throws Exception */ public DataInputStream getMessageStream() throws Exception { try { getMessageStream = new DataInputStream(new BufferedInputStream(socket.getInputStream())); return getMessageStream; } catch (Exception e) { e.printStackTrace(); if (getMessageStream != null) getMessageStream.close(); throw e; } } public void shutDownConnection() { try { if (out != null) out.close(); if (getMessageStream != null) getMessageStream.close(); if (socket != null) socket.close(); } catch (Exception e) { } } }
(3)客户端
- import java.io.BufferedOutputStream;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.FileOutputStream;
- public class ClientTest {
- //Socket对网络上某一个服务器的某一个端口发出连接请求
- private ClientSocket cs = null;
- private String ip = "localhost";
- private int port = 8821;
- private String sendMessage = "Windwos";
- public ClientTest() {
- try {
- if (createConnection()) {
- sendMessage();
- getMessage();
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- private boolean createConnection() {
- cs = new ClientSocket(ip, port);
- try {
- cs.CreateConnection();
- System.out.print("连接服务器成功!" + "\n");
- return true;
- } catch (Exception e) {
- System.out.print("连接服务器失败!" + "\n");
- return false;
- }
- }
- private void sendMessage() {
- if (cs == null)
- return;
- try {
- cs.sendMessage(sendMessage);
- } catch (Exception e) {
- System.out.print("发送消息失败!" + "\n");
- }
- }
- private void getMessage() {
- if (cs == null)
- return;
- DataInputStream inputStream = null;
- try {
- inputStream = cs.getMessageStream();
- } catch (Exception e) {
- System.out.print("接收消息缓存错误\n");
- return;
- }
- try {
- //本地保存路径,文件名会自动从服务器端继承而来。
- String savePath = "E:\\";
- int bufferSize = 8192;
- byte[] buf = new byte[bufferSize];
- int passedlen = 0;
- long len=0;
- savePath += inputStream.readUTF();
- DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(savePath)));
- len = inputStream.readLong();
- System.out.println("文件的长度为:" + len + "\n");
- System.out.println("开始接收文件!" + "\n");
- while (true) {
- int read = 0;
- if (inputStream != null) {
- read = inputStream.read(buf);
- }
- passedlen += read;
- if (read == -1) {
- break;
- }
- fileOut.write(buf, 0, read);
- }
- System.out.println("接收完成,文件存为" + savePath + "\n");
- fileOut.close();
- } catch (Exception e) {
- System.out.println("接收消息错误" + "\n");
- return;
- }
- }
- public static void main(String arg[]) {
- new ClientTest();
- }
- }
发表评论
-
java socket编程收藏之四(线程池)
2010-06-16 21:44 16361)Server端 Java代码 imp ... -
java socket编程收藏之三(多线程)
2010-06-16 21:43 1298(1)Server端 Java代码 im ... -
java socket编程收藏之二
2010-06-16 21:43 1290(1)Server端 Java代码 i ... -
HttpConnection通信
2010-05-06 11:34 5211/** * 以URL方式发送数据 * * ... -
应用HttpClient来对付各种顽固的WEB服务器
2009-08-23 18:26 1087一般的情况下我们都是 ... -
TCP/IP协议(Socket)做服务器,HTTP协议做客户端
2009-08-23 17:22 3731前几天在本区看到一个贴子,有人问,在Socket做服务器,在手 ...
相关推荐
Java Socket编程.pdf Java Socket编程.pdf Java Socket编程.pdf
Java Socket 编程实现两台主机间的通信 ...Java Socket 编程是实现两台主机间通信的重要技术之一。通过了解 Java Socket 编程的原理、实现方法和应用场景,可以更好地应用 Java Socket 编程来实现网络通信和数据传输。
java socket编程 java网络编程 课件 java socket编程 java网络编程 课件
Java Socket网络编程.pdf 学习资料 复习资料 教学资源
java socket 编程文档
浅谈Socket编程及Java实现,学习java socket编程
java Socket 编程配套源码
java socket网络编程,包括服务与客户端,多线程支持多客户端同时在线。
JAVA Socket教程 Java网络编程之传输控制协议 Socket套接字—Java套接字编程
java socket 编程,Java socket 编程实例,对于初学者是一个非常好的东西,对于有过经验的是非常好的更深了解的东西,希望大家共同进步
Java Socket 编程 html教程
JAVA Socket 网络编程教程 JAVA Socket 网络编程教程
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...
import java.io.*; import java.net.*; import java.util.*; import java.lang.*; public class Server extends ServerSocket { private static ArrayList User_List = new ArrayList(); private static ...
java socket 实现简单的客户端和服务端通信
浅出Java Socket编程浅出Java Socket编程浅出Java Socket编程浅出Java Socket编程浅出Java Socket编程
Java socket编程实例.pdf
Java Socket编程笔记_动力节点Java学院整理,动力节点口口相传的黄埔军校
用JAVA实现的文件上传,控制台输入,保存到数据库
Socket 编程是网络编程的核心技术之一,它提供了一种方式来实现网络通信。 Java Socket 编程的优点 Java Socket 编程有很多优点,例如: * 跨平台性:Java Socket 编程可以在不同的操作系统上运行,如 Windows、...