一、表示Socket服务端的类:Server.java
public class Server extends Thread{
public static int port = 6789;
public static String host = "10.60.1.127";
private static ServerSocket server = null;
public void run() {
if(server == null){
try{
//1、新建ServerSocket实例
server = new ServerSocket(port);
}catch(IOException e){
e.printStackTrace();
}
}
System.out.println("服务器启动...");
while(true){
try{
//2、访问ServerSocket实例的accept方法取得一个客户端Socket对象
Socket client = server.accept();
if(client == null) continue;
new SocketConnection(client, "D:\\").start();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
public static void main(String[] args) {
new Server().start();
}
}
Socket客户端处理类:SocketConnection.java
public class SocketConnection extends Thread{
private Socket client;
private String filepath;
public SocketConnection(Socket client, String filepath){
this.client = client;
this.filepath = filepath;
}
public void run(){
if(client == null) return;
DataInputStream in = null;
DataOutputStream writer = null;
try{
//3、访问Socket对象的getInputStream方法取得客户端发送过来的数据流
in = new DataInputStream(new BufferedInputStream(client.getInputStream()));
String fileName = in.readUTF(); //取得附带的文件名
if(filepath.endsWith("/") == false && filepath.endsWith("\\") == false){
filepath += "\\";
}
filepath += fileName;
//4、将数据流写到文件中
writer = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(new File(filepath)))));
int bufferSize = 2048;
byte[] buf = new byte[bufferSize];
int read = 0;
while((read=in.read(buf)) != -1){
writer.write(buf, 0, read);
}
writer.flush();
System.out.println("数据接收完毕");
}catch(IOException ex){
ex.printStackTrace();
}finally{
try{
in.close();
writer.close();
client.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
二、表示客户端的类:Client.java
public class Client {
private Socket client;
private boolean connected;
public boolean isConnected() {
return connected;
}
public void setConnected(boolean connected) {
this.connected = connected;
}
public Client(String host, int port){
try {
//1、新建Socket对象
client = new Socket(host, port);
System.out.println("服务器连接成功!");
this.connected = true;
} catch (UnknownHostException e) {
this.connected = false;
close();
} catch (IOException e) {
System.out.println("服务器连接失败!");
this.connected = false;
close();
}
}
/**
* 将文件内容发送出去
*
* @param filepath 文件的全路径名
*/
public void sendFile(String filepath){
DataOutputStream out = null;
DataInputStream reader = null;
try{
if(client == null) return;
File file = new File(filepath);
reader = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
//2、将文件内容写到Socket的输出流中
out = new DataOutputStream(client.getOutputStream());
out.writeUTF(file.getName()); //附带文件名
int bufferSize = 2048; //2K
byte[] buf = new byte[bufferSize];
int read = 0;
while((read=reader.read(buf)) != -1){
out.write(buf, 0, read);
}
out.flush();
}catch(IOException ex){
ex.printStackTrace();
close();
}finally{
try {
reader.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 关闭Socket
*/
public void close(){
if(client != null){
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Client client = new Client(Server.host, Server.port);
if(client.isConnected()){
client.sendFile("E:\\EKI.txt");
client.close();
}
}
}
分享到:
相关推荐
本文将基于给定的标题“通过Socket传送文件的例子”和描述来深入探讨Socket编程以及如何利用它进行文件传输。 首先,Socket是网络编程中的一个接口,它允许应用程序通过网络发送和接收数据。在Java中,Socket类提供...
- **安全性**:如果是在不安全的网络环境中传输文件,应考虑使用SSL/TLS等加密机制保证数据的安全性。 - **文件分块**:对于大文件,可能需要分块传输,每次发送一小部分,以避免内存溢出。 在压缩包中的`Socket...
总之,这个"socket传输文件例子demo"是一个实践性的学习资源,可以帮助开发者深入理解如何在VC++环境中利用Socket进行文件传输,同时也可以作为开发自己网络通信软件的基础。通过阅读和分析源代码,我们可以学习到...
通过以上步骤,你可以在Delphi中实现一个基本的文件传输系统,而文件名称列表(socket)可能代表了实际项目中多个文件的传输需求。在实际应用中,你可能需要对这个基础进行扩展,例如支持多文件传输、进度显示、断点...
这个“C#语言Socket传文件例子”提供了学习Socket通信和文件传输的实践平台。通过理解和实践这个例子,开发者可以掌握Socket编程的基本技巧,为进一步开发复杂的网络应用打下基础。在实际项目中,还可以考虑增加断点...
标题"VC socket传送文件的例子(转载)"揭示了我们将讨论如何使用Visual C++(简称VC)通过Socket接口来实现文件的发送与接收。 首先,Socket是网络编程的基本组件,它提供了进程间通信(IPC)的接口,使得运行在...
在这个“socket文件传输(TCP)源码实例”中,我们将深入理解如何利用TCP协议通过socket进行文件传输。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,确保了数据的...
这里我们将重点讨论使用TCP协议的SOCK_STREAM,因为它是传输文件的理想选择,因为它提供了一种可靠的数据传输机制。 创建socket的第一步是调用socket()函数,该函数返回一个socket描述符,它是后续操作的基础。然后...
总结,Socket传输文件实例涉及到网络通信基础、Socket编程、文件操作以及错误处理等多个方面,通过理解这些知识点,我们可以构建自己的文件传输系统,实现两台计算机之间的文件共享。在实践中,我们应根据具体需求...
在Android应用开发中,Socket通信常用于实现即时通讯、文件传输等功能,例如聊天应用、在线游戏等。 总结一下,这个“Socket编程简单例子”涵盖了以下知识点: 1. Socket的基本原理和作用 2. 在Android客户端创建...
通过以上步骤和注意事项,我们可以构建一个基本的Socket文件传输系统。这个系统虽然简单,但足以展示Socket编程的基本原理和文件传输的核心逻辑。在实际项目中,可以根据需求进一步扩展和优化,例如添加身份验证、...
服务器端的核心是监听特定端口(在这个例子中是8821)上的连接请求,并在接收到连接后传输文件。以下是关键步骤: 1. **创建ServerSocket**:`ServerSocket ss = new ServerSocket(port);` 这行代码初始化了一个...
在IT领域,尤其是在网络编程中,使用socket进行文件传输是一个常见的需求。...以上就是通过socket进行文件传输的主要步骤,涉及到socket的创建、绑定、监听、接受连接、数据收发以及文件传输等关键环节。
描述中的"socket 文件传输,基于TCP的文件传输,是个不错的例子"进一步强调了: 1. **Socket文件传输**:通过socket接口,开发者可以直接控制TCP连接,实现文件的发送和接收,这对于跨网络的文件共享和备份尤其有用...
Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的网络通信。在本示例中,我们探讨的是如何使用...通过"TestSocket"这个例子,你可以更深入地学习如何在实际项目中运用Socket,从而实现跨网络的高效通信。
这个是我自己编写的网络传输,主要可以传输文件和信息(支持多文件多用户传输)。用C#编写,使用了Socket。包含了一个传输类,一个数据库连接类。是学习网络传输的好帮手。(完整源代码,采用VS2005编写)绝对可以...
这个例子展示了如何创建Socket,发送文件和接收文件的基本流程。请注意,这只是一个基础示例,实际应用中需要考虑更多的细节,如异常处理、超时设置、多线程处理等。 至于“工具”,在进行Socket文件传输时,可能会...
在这个例子中,我们看到的是一个C#实现的Socket文件传输示例,用于发送文本文件。这个程序分为两部分:发送文件的窗体和接收文件的窗体。 首先,让我们详细解释发送文件的部分: 1. **引用库**:程序使用了`System...