TCP通信,客户端数据上传服务器

1.TCP通信:服务器端:ServerSocket;客户端主动连接服务器端(通过IO流传输数据);客户端:Socket:获取InputStream和OutputStream对象,获取对象后进行传输:
2.客户端:1.创建客户端对象:Socket socket=new Socket("127.0.0.1",6666);
3.通过Socket对象创建输出流对象:OutputStream out=socket.getOutputStream();
4.写要传输的内容:out.write("你好".getbytes())
5.接收服务器返回的数据:创建数据接收流对象:InputStream in=socket.getInputStream()
6.创建接收数据用的byte数组:byte[] bytes=new char[1024];7.创建ch的长度:int len=in.read(bytes);
8.接收数据并打印system.out.println(内容是:+new String(bytes,0,len));
9.释放资源:socket.close();
10.服务器端:
1.创建服务器对象:ServerSocket server=new ServerSocket(6666);
2.创建客户端接收对象:Socket socket=server.accrpt();
3.创建字节输入流:InputStream in=socket.getInputStream();
4.创建接收的byte数组:byte[] bytes=new byte[1024];
5.创建接收数据的byte数组长度:int len=in.read(bytes); 得到客户端ip:String ip=socket.getInetAddress().getHostAddress()
6.打印接收数据:system.out.println(ip地址:+ip+内容+new String(bytes,0,len));
7.回复客户端:1.创建字节输出流:OutputStream out=socket.getOutputStream();
2.写返回数据:out.writer("你好".getbytes); 3.释放资源:server.close();
循环打印:
1.客户端: Socket socket=new Socket("127.0.0.1",6666); OutputStream out=socket.getOutputStream(); Inputstream in=socket.getInputStream();
Scanner sc=new Scanner(System.in);whlie(true){ out.writer(sc.next().getbytes);byte[] bytes=new byte[1024];int len=id.read(bytes);system.out.println
(newString(bytes,0,len))}
2.服务器端:ServerSocket server=new ServerSocket(6666); Socket socket=new Socket();InputStream in=socket.getInputStream();Scanner sc=new Scanner(System.in)
byte[] bytes=new byte[1024];whlie(true){ int len=in.read(bytes);String ip=socket.getInertAddress().getHostAddress();system.out.println(ip+new String (bytes,0,len)) OutputStream out=socket.getOutputStream();out.writer(sc.next().getbytes)};
3.正常客户端:Socket socket=new Socket("127.0.0.1",6666); OutputStream out=socket.getOutputStream(); out.wtiter("你好".getbytes);
InputStream in=socket.getInputStream(); byte[] bytes=new byte[1024]; int len=in.read(bytes);system.out.println(new String(bytes,0,len));socket.close();
4.正常服务器端:ServerSocket server=new ServerSocket(6666); Socket socket=server.accept();InputStream in=socket.getInputStream();
byte[] bytes=new byte[1024]; int len=in.read(bytes);String ip=socket.getInetAddress().getHostAddress();system.out.println(ip+new String(bytes,0,len))
OutputStream out=socket.getOutputStream(); out.writer("你好".getbytes());server.close();
5.文件上传服务器
客户端:1.创建客户端对象:Socket socket=new Socket("127.0.0.1",6666); 2.创建字节输出流:OutputStream out=socket.getOutputStream();
3.创建字节读入流:FileInputStream fis=new FileInputStream("F:\\demo0611\\t.txt"); 4.开始传:int len=0;byte[]w bytes=new byte[1024];while((len=fis.read(bytes))!=- 1){out.write(bytes,0,len)}//给服务器一个出口 socket.shutdownOutput();//接收服务器返回值:InputStream in=socket.getInputStream(); int len=in.read(bytes);
system.out.println(new String(bytes,0,len));socket.close;fis.close;
6.服务器端:1.创建服务器对象:ServerSocket server=new ServerSocket(6666);2.客户端:Socket socket=server.accept();3.创建字节输出流:InputStream in=socket.getInputStream(); 4.创建file地址:File file=new File("F:\\upload");判断是否存在改文件夹没有就创建:if(!file.exists()){file.mkdirs()};
6.创建文件名:String filename=System.currentTimeMillis()+new Random().nextInt(1000)+".txt";创建字节输出流:FileOutputStream fos=new FileOutputStream();
7.开始复制:int len=0; byte[] bytes=new byte[1024];while((len=in.read(bytes))!=-1){fos.write(bytes,0,len)};
8.给客户端回复:1.创建字节输出流:OutputStream out=socket.getOutputStream();2.输出字符:out.write("上传成功".getbytes); server.close();fos.close();
多线程服务器:private SocketServer server; public Upload(){} public Upload(ServerSocket server){this.server=server;};public void run(){
ServerSoscket server=null;FileOutputStream pos=null;while(true){ Socket socket=new Socket(); InputStream in=socket.getInputStream(); File file=new File("")
if(!file.exists()){file.mkdirs();} int len=0;byte[] bytes=new byte[1024]; String filename=system.currentTimeMillis()+new Random().nextInt(1000)+".txt";
fos=new FileOutputStream(file+file.separator+filename);while((len=in.read(bytes)!=-1){ fos.write(bytes,0,len)};OutputStream out=socket.getOutputStream();
out.write("n".getbytes());server.close; fos.close(); ServerSocket socket=new ServerSocket(6666);Upload uo=new Upload(server);while(true){new Thread(uo).start ()}

猜你喜欢

转载自www.cnblogs.com/hankai2735/p/11481896.html