例一:
/*
客户端:
1,服务端点
2,读取客户端已有的图片信息
3,通过socket 输出流将数据发给服务端
4,读取服务端反馈信息
5,关闭
*/
import java.io.*;
import java.net.*;
class PicClient
{
public static void main(String []args) throws Exception
{
Socket s = new Socket("127.0.0.1",5554);
FileInputStream fis = new FileInputStream("a.bmp");
OutputStream out = s.getOutputStream();
byte [] buf = new byte [1024];
int len = 0;
while((len = fis.read(buf))!= -1)
{
out.write(buf,0,len);
}
//告诉服务端 数据已经写完
s.shutdownOutput();
InputStream in = s.getInputStream();
byte [] bufIn = new byte[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn,0,num));
fis.close();
s.close();
}
}
/*
服务端
*/
class PicServer
{
public static void main(String []args) throws Exception
{
ServerSocket ss = new ServerSocket(5554);
Socket s = ss.accept();
InputStream in = s.getInputStream();
FileOutputStream fos = new FileOutputStream("server.bmp");
byte []buf = new byte[1024];
int len = 0;
while((len = in.read(buf))!=-1)
{
fos.write(buf,0,len);
}
OutputStream out = s.getOutputStream();
out.write("上传成功!".getBytes());
fos.close();
s.close();
ss.close();
}
}
//TCP 客户端并发上传图片
/*
客户端
*/
import java.io.*;
import java.net.*;
class PicClient
{
public static void main(String []args) throws Exception
{
//传入图片路径
if(args.length != 1)
{
System.out.println("请选择要上传的图片:");
return;
}
File file = new File(args[0]);
if( !(file.exists() && file.isFile()))
{
System.out.println("文件不存在 或 文件已损坏!");
return;
}
if( !file.getName().endsWith(".jpg"))
{
System.out.println("文件格式错误,请重新选择!");
return;
}
if(file.length() > 1024*1024*5)
{
System.out.println("文件过大");
return;
}
Socket s = new Socket("127.0.0.1",5554);
FileInputStream fis = new FileInputStream(file);
OutputStream out = s.getOutputStream();
byte [] buf = new byte [1024];
int len = 0;
while((len = fis.read(buf))!= -1)
{
out.write(buf,0,len);
}
//告诉服务端 数据已经写完
s.shutdownOutput();
InputStream in = s.getInputStream();
byte [] bufIn = new byte[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn,0,num));
fis.close();
s.close();
}
}
/*
服务端
*/
class PicThread implements Runnable
{
private Socket s;
PicThread(Socket s)
{
this.s = s;
}
public void run()
{
int count =0;
String ip = s.getInetAddress().getHostAddress();
try
{
System.out.println(ip +"...connected!");
InputStream in = s.getInputStream();
File file = new File(ip+"("+count+").jpg");
while(file.exists())
file = new File(ip+"("+(++count)+").jpg");
FileOutputStream fos = new FileOutputStream(file);
byte []buf = new byte[1024];
int len = 0;
while((len = in.read(buf))!=-1)
{
fos.write(buf,0,len);
}
OutputStream out = s.getOutputStream();
out.write("上传成功!".getBytes());
fos.close();
s.close();
}
catch (Exception e)
{
throw new RuntimeException( ip +"上传失败!");
}
}
}
class PicServer
{
public static void main(String []args) throws Exception
{
ServerSocket ss = new ServerSocket(5554);
while(true){
Socket s = ss.accept();
new Thread(new PicThread(s)).start();
}
//ss.close();
}
}