SOCKET问题,答好即给分 通过SOCKET实现点对点的文件交换功能,包括有简单的握手、文件传输请求应答、出错重传等交互通信协议机制,提供简单的APPLICATION界面或命令行界面请高手给个建议,该如何设计,最好能给出关键部分代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import java.net.*;import java.io.*;import javax.swing.*;public class Client{ private Socket you; SendData sends; JFileChooser select; File file; String address = null; public Client() { try { select = new JFileChooser(); System.out.println("输入服务器IP地址:"); BufferedReader bin = new BufferedReader(new InputStreamReader(System.in)); address = bin.readLine(); while(address == "" || address.length() == 0 || address == null) { System.out.println("输入错误,请重新输入:("); address = bin.readLine(); } bin.close(); you = new Socket(address,2007); System.out.println("连接服务器监听端口:2007......"); if(you != null) { System.out.println("连接服务器成功,请选择文件:>"); select.showOpenDialog(null); file = select.getSelectedFile(); new Thread(new SendData(you,file)).start(); System.out.println("发送完毕!关闭线程..."); } }catch(Exception e){System.out.println("服务端运行出错!");} } public static void main(String args[]) { new Client(); }}class SendData implements Runnable{ private File files; private BufferedInputStream readFile = null; private DataInputStream din = null; private DataOutputStream dout = null; private Socket mySock = null; private String fileName; private byte data[] = new byte[1024]; public SendData(Socket you,File file) { this.mySock = you; files = file; fileName = files.getName(); } public void run() { try { readFile = new BufferedInputStream(new FileInputStream(files)); din = new DataInputStream(new BufferedInputStream(mySock.getInputStream())); dout = new DataOutputStream(new BufferedOutputStream(mySock.getOutputStream())); dout.writeUTF(fileName); while((readFile.read(data)) != -1) { dout.writeInt(1); dout.write(data,0,data.length); dout.flush(); } readFile.close(); dout.writeInt(0); clears(); }catch(Exception e){} finally { clears(); } } void clears() { try { dout.close(); din.close(); mySock.close(); }catch(Exception e){System.out.println("关闭出错");} }} import java.net.*;import java.io.*;public class Server{ private ServerSocket server; private Socket you; private receive rec; public Server() { try { server = new ServerSocket(2007); System.out.println("服务器运行中,监听端口:2007......"); while(true) { you = server.accept(); if(you != null) { System.out.println("有客户连接启动接收线程..."); System.out.println("接收文件中......"); new Thread(new receive(you)).start(); } } }catch(Exception e){System.out.println("服务端运行出错!");} } public static void main(String args[]) { new Server(); }}class receive implements Runnable{ private File files; private DataInputStream din = null; private DataOutputStream dout = null; private Socket mySock = null; private byte data[] = new byte[1024]; public receive(Socket you) { this.mySock = you; } public void run() { try { din = new DataInputStream(new BufferedInputStream(mySock.getInputStream())); dout = new DataOutputStream(new BufferedOutputStream(mySock.getOutputStream())); String fileName = din.readUTF(); BufferedOutputStream writeFile = new BufferedOutputStream( new FileOutputStream(fileName)); while(din.readInt() != 0) { din.read(data); writeFile.write(data,0,data.length); } writeFile.close(); clears(); System.out.println("接收文件完毕!--->服务器继续监听..."); }catch(Exception e){System.out.println("接收出错!");} finally { clears(); } } void clears() { try { dout.close(); din.close(); mySock.close(); }catch(Exception e){System.out.println("关闭出错");} }}先运行Server 编译运行通过,参考下CSDN上面排版怎么这样了 frilly(秋◆水) 多谢了!这个怎么给分的啊,我是新手,不知道怎么操作 为什么在java.sql里没有BaseQuery,我用的是JDK 1.6 求救!!!如何一个构造方法:没有形参,在方法中将车牌号设置“XX1234” 强制类型转换异常 一个易语言也能轻松调用win32 API为什么java 请教关于java中Timer的使用(分已经散完了,希望大家能帮忙) 问个趣鸟的问题. 问个问题!~关于连结符'+'! 在线等!~给出答案马上结贴! 过来看看这个问题:(散分100) 面向对象求教!!! 一个初学者的问题!!!(2) JAI怎么压缩tiff啊,急救 如何在jsp页面对oracle数据库中的某张表备份到本地及恢复???急!!!
import java.io.*;
import javax.swing.*;
public class Client
{
private Socket you;
SendData sends;
JFileChooser select;
File file;
String address = null;
public Client()
{
try
{ select = new JFileChooser();
System.out.println("输入服务器IP地址:");
BufferedReader bin = new BufferedReader(new InputStreamReader(System.in));
address = bin.readLine();
while(address == "" || address.length() == 0 || address == null)
{
System.out.println("输入错误,请重新输入:(");
address = bin.readLine();
}
bin.close();
you = new Socket(address,2007);
System.out.println("连接服务器监听端口:2007......");
if(you != null)
{
System.out.println("连接服务器成功,请选择文件:>");
select.showOpenDialog(null);
file = select.getSelectedFile();
new Thread(new SendData(you,file)).start();
System.out.println("发送完毕!关闭线程...");
}
}catch(Exception e){System.out.println("服务端运行出错!");}
}
public static void main(String args[])
{
new Client();
}
}class SendData implements Runnable
{
private File files;
private BufferedInputStream readFile = null;
private DataInputStream din = null;
private DataOutputStream dout = null;
private Socket mySock = null;
private String fileName;
private byte data[] = new byte[1024];
public SendData(Socket you,File file)
{
this.mySock = you;
files = file;
fileName = files.getName();
}
public void run()
{
try
{
readFile = new BufferedInputStream(new FileInputStream(files));
din = new DataInputStream(new BufferedInputStream(mySock.getInputStream()));
dout = new DataOutputStream(new BufferedOutputStream(mySock.getOutputStream()));
dout.writeUTF(fileName);
while((readFile.read(data)) != -1)
{
dout.writeInt(1);
dout.write(data,0,data.length);
dout.flush();
}
readFile.close();
dout.writeInt(0);
clears();
}catch(Exception e){}
finally
{
clears();
}
}
void clears()
{
try
{
dout.close();
din.close();
mySock.close();
}catch(Exception e){System.out.println("关闭出错");}
}}
import java.io.*;
public class Server
{
private ServerSocket server;
private Socket you;
private receive rec;
public Server()
{
try
{
server = new ServerSocket(2007);
System.out.println("服务器运行中,监听端口:2007......");
while(true)
{
you = server.accept();
if(you != null)
{
System.out.println("有客户连接启动接收线程...");
System.out.println("接收文件中......");
new Thread(new receive(you)).start();
}
}
}catch(Exception e){System.out.println("服务端运行出错!");}
}
public static void main(String args[])
{
new Server();
}
}class receive implements Runnable
{
private File files;
private DataInputStream din = null;
private DataOutputStream dout = null;
private Socket mySock = null;
private byte data[] = new byte[1024];
public receive(Socket you)
{
this.mySock = you; }
public void run()
{
try
{
din = new DataInputStream(new BufferedInputStream(mySock.getInputStream()));
dout = new DataOutputStream(new BufferedOutputStream(mySock.getOutputStream()));
String fileName = din.readUTF();
BufferedOutputStream writeFile = new BufferedOutputStream(
new FileOutputStream(fileName));
while(din.readInt() != 0)
{
din.read(data);
writeFile.write(data,0,data.length);
}
writeFile.close();
clears();
System.out.println("接收文件完毕!--->服务器继续监听...");
}catch(Exception e){System.out.println("接收出错!");}
finally
{
clears();
}
}
void clears()
{
try
{
dout.close();
din.close();
mySock.close();
}catch(Exception e){System.out.println("关闭出错");}
}}先运行Server 编译运行通过,参考下
CSDN上面排版怎么这样了
这个怎么给分的啊,我是新手,不知道怎么操作