读取客户端已有的图片数据
[java]
package net2;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/*
客户端:
1,服务端点
2,读取客户端已有的图片数据
3,通过socket输出流将数据发给服务端
4,读取服务端反馈信息
5,关闭
*/
public class PicClient {
public static void main(String[] args) throws Exception {
Socket s=new Socket("192.168.1.102", 10029);
BufferedInputStream bufr=new BufferedInputStream(new FileInputStream("C:\\1.jpg"));
OutputStream out=s.getOutputStream();
byte[]buf=new byte[1024];
int len=0;
while((len=bufr.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));
bufr.close();
s.close();
}
}
package net2;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/*
客户端:
1,服务端点
2,读取客户端已有的图片数据
3,通过socket输出流将数据发给服务端
4,读取服务端反馈信息
5,关闭
*/
public class PicClient {
public static void main(String[] args) throws Exception {
Socket s=new Socket("192.168.1.102", 10029);
BufferedInputStream bufr=new BufferedInputStream(new FileInputStream("C:\\1.jpg"));
OutputStream out=s.getOutputStream();
byte[]buf=new byte[1024];
int len=0;
while((len=bufr.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));
bufr.close();
s.close();
}
}
[java]
package net2;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 服务端
*/
public class PicServer {
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(10029);
Socket s=ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println("ip" + ip + "connect...");
InputStream in= s.getInputStream();
FileOutputStream fos=new FileOutputStream("server.jpg");
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();
}
}
package net2;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 服务端
*/
public class PicServer {
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(10029);
Socket s=ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println("ip" + ip + "connect...");
InputStream in= s.getInputStream();
FileOutputStream fos=new FileOutputStream("server.jpg");
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();
}
}
这个服务端有局限性,当A客户端连接上后,被服务端收到,服务端执行具体流程,这时B客户端连接只有等待。
因为服务端还没有处理完A客户端的请求,还有循环回来执行下次accept方法,所以暂时获取不到B客户端对象。
那么为了让多个客户端并发访问服务端,那么服务端最好将每个客户端封装进单独的线程中,这样
补充:软件开发 , Java ,