`
liyinfeng56
  • 浏览: 94081 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java Socket 定时读取数据

阅读更多
//客户端:
package com.socket.example;

import java.io.*;
import java.net.*;
import java.util.TimerTask;

/**
 * 
 * @author li_yf
 * RemoteFileClient
 *
 */
public class RemoteFileClient extends TimerTask {
	protected String hostIp;
	protected int hostPort;
	protected BufferedReader socketReader;
	protected PrintWriter socketWriter;

	public RemoteFileClient(String aHostIp, int aHostPort) {
		hostIp = aHostIp;
		hostPort = aHostPort;
	}

	public void setUpConnection() {
		try {
			Socket client = new Socket(hostIp, hostPort);
			socketReader = new BufferedReader(new InputStreamReader(client
					.getInputStream()));
			socketWriter = new PrintWriter(client.getOutputStream(),true);
		} catch (UnknownHostException e) {
			System.out
					.println("Error setting up socket connection: unknown host at "
							+ hostIp + ":" + hostPort);
		} catch (IOException e) {
			System.out.println("Error setting up socket connection: " + e);
		}
	}

	public String getFile(String fileNameToGet) {
		StringBuffer fileLines = new StringBuffer();
		try {
			socketWriter.println(fileNameToGet);
			socketWriter.flush();
			String line = null;
			while ((line = socketReader.readLine()) != null)
				fileLines.append(line + "\n");
		} catch (IOException e) {
			System.out.println("Error reading from file: " + fileNameToGet);
		}
		return fileLines.toString();
	}

	public void tearDownConnection() {
		try {
			socketWriter.close();
			socketReader.close();
		} catch (IOException e) {
			System.out.println("Error tearing down socket connection: " + e);
		}
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		RemoteFileClient remoteFileClient = new RemoteFileClient("192.168.0.6",
				139);
		remoteFileClient.setUpConnection();
		String fileContents = remoteFileClient.getFile("E:\\RemoteFile.txt");
		remoteFileClient.tearDownConnection();
		//String name=new String ((fileContents.getBytes("iso-8859-1"),);
		System.out.println("读取的远程内容:"+fileContents);

	}
}


//服务器端:

package com.socket.example;

import java.io.*;
import java.net.*;

/**
 * 
 * @author li_yf
 * RemoteFileServer
 *
 */
public class RemoteFileServer {
	protected int listenPort = 139;

	public static void main(String[] args) {
		RemoteFileServer server = new RemoteFileServer();
		server.acceptConnections();
	}

	public void acceptConnections() {
		try {
			ServerSocket server = new ServerSocket(listenPort);
			Socket incomingConnection = null;
			while (true) {
				incomingConnection = server.accept();
				handleConnection(incomingConnection);
			}
		} catch (BindException e) {
			System.out.println("Unable to bind to port " + listenPort);
		} catch (IOException e) {
			System.out.println("Unable to instantiate a ServerSocket on port: "
					+ listenPort);
		}
	}

	public void handleConnection(Socket incomingConnection) {
		try {
			OutputStream outputToSocket = incomingConnection.getOutputStream();
			InputStream inputFromSocket = incomingConnection.getInputStream();
			BufferedReader streamReader = new BufferedReader(
					new InputStreamReader(inputFromSocket));
			FileReader fileReader = new FileReader(new File(streamReader
					.readLine()));
			BufferedReader bufferedFileReader = new BufferedReader(fileReader);
			PrintWriter streamWriter = new PrintWriter(incomingConnection
					.getOutputStream());
			String line = null;
			while ((line = bufferedFileReader.readLine()) != null) {
				streamWriter.println(line);
			}
			fileReader.close();
			streamWriter.close();
			streamReader.close();
		} catch (Exception e) {
			System.out.println("Error handling a client: " + e);
		}
	}
}



//main方法:
package com.socket.example;

import java.util.Timer;

public class TimerTaskClass {
	private static int TIME_INTERVAL = 10 * 1000;
	private static String SOCKET_SERVER = "192.168.0.6";
	private static int SOCKET_PORT = 139;

	public static void main(String args[]) {
		Timer timer = new Timer();
		timer.schedule(new RemoteFileClient(SOCKET_SERVER, SOCKET_PORT),
				1 * 1000, TIME_INTERVAL);
	}

}

分享到:
评论

相关推荐

    socket定时发送数据小程序

    本项目“socket定时发送数据小程序”正是这样一个专注于通过定时器发送数据的应用。在这个程序中,我们利用了Socket接口来建立客户端与服务器端的连接,并通过定时器(Timer)实现周期性地发送数据。 首先,我们要...

    Java socket聊天室+窗口抖动

    Java Socket是Java编程语言中用于网络通信的核心API,它提供了低级别的、面向连接的、可靠的、基于字节流的通信。在这个"Java socket聊天室+窗口抖动"项目中,我们将探讨如何使用Java Socket构建一个基本的多人在线...

    java socket.rar

    - **InputStream和OutputStream**:Socket提供两个流对象,InputStream用于读取数据,OutputStream用于写入数据。常用的子类如InputStreamReader和OutputStreamWriter可进行字符编码转换。 - **BufferedReader和...

    Java socket聊天软件 服务器和用户分开,可断开重连恢复聊天

    客户端可能有一个Socket实例用于连接服务器,以及一个单独的线程用于读取服务器发送的数据,同时还有一个主线程用于处理用户输入并发送消息。 总的来说,这个Java Socket聊天软件项目涵盖了网络编程基础、并发处理...

    JAVA SOCKET实现CMPP2.0

    Java Socket实现CMPP2.0是中国移动互联网短信网关...总的来说,Java Socket实现CMPP2.0涉及到网络通信、协议解析、数据编码解码等多个技术点。理解并掌握这些知识点,能有效帮助开发者构建稳定、高效的短信服务平台。

    用Java Socket实现SMTP邮件发送

    在IT行业中,Java Socket编程是网络通信的基础,广泛应用于各种网络服务,如文件传输、聊天应用、邮件发送等。SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的标准协议,而使用Java Socket来实现...

    Java心跳包功能TCP实现

    - 实现一个循环,不断读取`Socket`的输入流,当接收到心跳包时,返回一个确认响应。 2. **创建TCP客户端**: - 使用`java.net.Socket`类建立到服务器的连接,并打开一个输出流来发送心跳包。心跳包可以是一个简单...

    Socket服务器端断开后重新打开,客户端将自动完成链接

    在Java等编程语言中,我们可以使用Socket类来创建服务器端(ServerSocket)和客户端(Socket)。服务器端通常会创建一个ServerSocket,并绑定到特定的IP地址和端口号,然后调用其accept()方法开始监听连接请求。每当...

    基于java的Socket 聊天通信演示代码.zip

    当一个客户端尝试连接时,服务器会创建一个新的Socket实例来处理这个连接,然后可以读取客户端发送的数据并响应。在聊天服务器的实现中,可能会用到`ServerSocket`类来创建监听端口,并用`accept()`方法等待客户端的...

    socket链路层

    本篇文章将详细探讨“socket链路层”,主要涉及Java中的Socket编程,包括如何创建Socket、实现心跳检测、定时接收数据、重连机制以及读取配置文件等核心知识点。 一、创建Socket 在Java中,Socket是基于TCP协议的...

    简单的聊天程序java和socket的应用

    总的来说,这个简单的聊天程序示例可以帮助初学者理解Java Socket与TCP协议的结合,以及如何通过网络进行数据交换。通过实际操作和调试,你可以更深入地掌握这些知识,并为后续的网络编程打下坚实的基础。

    Java+Socket聊天室

    Java+Socket聊天室是一种基于Java编程语言和Socket通信协议实现的多用户交互系统。在这个系统中,用户可以通过客户端连接到服务器,与其他在线用户进行实时的文字聊天。Socket在计算机网络编程中扮演着重要的角色,...

    中控考勤机机器连接与考勤数据的实时获取-java版

    3. **创建连接**:使用Java的Socket编程或SerialPort类(如果使用RXTX库进行串口通信)建立与考勤机的连接。 4. **发送与接收数据**:编写发送请求和解析响应的代码。这可能涉及XML或自定义格式的数据包,需要按照...

    socket-支持断点续传java多线程下载

    - **DownloadHis.java**:下载历史记录类,定时将下载信息写入磁盘,为断点续传提供基础数据支持。 - **DownloadMain.java**:下载主线程类,负责协调所有子线程的工作,包括任务分配、进度监控等。 - **...

    Java心跳包功能实现

    心跳包的原理是客户端和服务端周期性地交换数据包,即使没有实际业务数据需要传输,也会发送一个空的数据包。如果一方在预设的时间内没有收到对方的心跳包,那么就可以认为网络连接可能已经断开,可以采取相应的恢复...

    定时从ftp下载xml并解析为图片

    你可以使用Java的`javax.imageio.ImageIO`类来读取和写入图片。如果数据是Base64编码,需要先解码,再将其转换为二进制流,然后用ImageIO写入到文件。对于网络上的图像资源,可以使用`java.net.URL`和`java.net....

    Socket进程守护.zip

    "建立连接后,通过输入输出流读取客户端发送的请求信息"意味着我们可以使用`Socket`的`InputStream`和`OutputStream`来处理数据传输。例如: ```java InputStream input = clientSocket.getInputStream(); ...

    java编写的飞鸽传书程序,实现了局域网间的文件传输功能.zip

    一旦连接建立,文件的传输可以通过输入输出流来实现,将本地文件的数据读取并发送到对方,接收方则通过接收流将数据写入到本地文件系统。 在描述中提到的".zip"文件,通常包含有该程序的源代码、编译后的类文件以及...

    基于springboot+netty+mybatis+hbase+kafka实现的socket server+源代码+文档说明

    - [ ] socket client接受到请求数据的命令后,从mysql中读取假数据,伪造成真实设备传输的数据格式,并发送给socket server - [ ] socket server接收到返回的数据后,分别写入到hbase数据库和kafka队列中 - [ ] 最后...

    andorid socket 通信

    2. 数据传输:使用输出流写入数据到Socket,然后通过输入流读取服务端的响应。 3. 关闭连接:通信完成后,记得关闭Socket以及输入输出流,释放资源。 三、服务端实现 1. 监听请求:服务器端使用`java.net....

Global site tag (gtag.js) - Google Analytics