java tcp 文件_(java)tcp传送文件

服务器端:

package tcp;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class Fileserver implements Runnable {

private static final int port=8000;//服务器监听端口

private Socket s;

public Fileserver(Socket s){

super();

this.s=s;

}

public static void server(){

try{

ServerSocket ss=new ServerSocket(port);//创建服务器Socket

while(true){

Socket s=ss.accept();

new Thread(new Fileserver(s)).start();//将联通的socket传给该线程

}

}catch(IOException e){

e.printStackTrace();

}

}

public static void main(String[] args) {

Fileserver.server();

}

public void run() {

byte[] buf=new byte[100];

OutputStream os=null;

FileInputStream fins=null;

try{

os=s.getOutputStream();

String filepath="F:\\java高级\\network\\file.txt";

String filename="file.txt";

System.out.println("将文件名:"+filename+"传输过去");

os.write(filename.getBytes());

System.out.println("开始传输文件");

fins=new FileInputStream(filepath);

int data;

while((data=fins.read())!=-1)

{

os.write(data);

}

System.out.println("文件传输结束");

}catch(IOException e){

e.printStackTrace();

}finally{

try{

if(fins!=null)

fins.close();

if(os!=null)

os.close();

this.s.close();

}catch(IOException e){

e.printStackTrace();

}

}

}

}

客户端:

package tcp;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

public class Fileclient {

private static final String serverip="127.0.0.1";

private static final int sport=8000;

private static final int cport=8001;

public static void main(String[] args) {

byte[] buf=new byte[100];//用来接收传过来的字符

Socket s=new Socket();

try{

s.connect(new InetSocketAddress(serverip,sport),cport);

InputStream is=s.getInputStream();

int len=is.read(buf);

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

System.out.println(filename);;

FileOutputStream fos=new FileOutputStream("F:\\java高级\\"+filename);

int data;

while((data=is.read())!=-1)

{

fos.write(data);

}

is.close();

s.close();

}catch(IOException e){

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤接收客户端发送的TCP报文: 1. 创建一个ServerSocket对象并绑定端口号。 2. 调用ServerSocket的accept()方法,等待客户端连接请求。 3. 当有客户端连接请求时,accept()方法会返回一个Socket对象,该对象表示与客户端的通信连接。 4. 通过Socket对象的getInputStream()方法获取输入流,可以读取客户端发送的TCP报文。 5. 通过Socket对象的getOutputStream()方法获取输出流,可以向客户端发送TCP报文。 下面是一个简单的Java TCP服务器端的示例代码: ```java import java.io.*; import java.net.*; public class Server { public static void main(String[] args) throws IOException { int port = 8888; ServerSocket serverSocket = new ServerSocket(port); System.out.println("Waiting for client connection..."); Socket clientSocket = serverSocket.accept(); System.out.println("Client connected: " + clientSocket); BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println("Received message from client: " + inputLine); out.println("Server received message: " + inputLine); } in.close(); out.close(); clientSocket.close(); serverSocket.close(); } } ``` 在上面的示例代码中,我们创建了一个ServerSocket对象,并绑定了端口号8888。然后调用accept()方法等待客户端连接请求。当有客户端连接时,我们获取客户端Socket对象,并通过Socket对象获取输入流和输出流。在while循环中,我们不断读取客户端发送的消息,并向客户端发送回复。最后,我们关闭输入流、输出流和Socket对象,并关闭ServerSocket对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值