(4)优化TCP编写 客服端上传图片,服务端给客服端发消息问好
2021-03-03 17:29
标签:cal 文件 tab nts 服务 write 客户端 特点 span 此demo的在上一个的基础上实现客服端与服务器端互相发送消息给对方,提高数据的读与取的效率,首先要先启动服务端,否则报错,因为TCP是可靠协议,所以没有对应的服务端时会报错,发送数据为图片 刷新项目后会多一张上传的图片 (4)优化TCP编写 客服端上传图片,服务端给客服端发消息问好 标签:cal 文件 tab nts 服务 write 客户端 特点 span 原文地址:https://www.cnblogs.com/KdeS/p/13275007.html(4)优化TCP编写 客服端上传图片,服务端给客服端发消息问好
一.编写TCP协议服务端
1 package demo.soket.tcp;
2 ?
3 import java.io.BufferedInputStream;
4 import java.io.BufferedOutputStream;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 import java.io.OutputStream;
8 import java.net.ServerSocket;
9 import java.net.Socket;
10 ?
11 //TCP协议服务端
12 public class Server {
13 public static void main(String[] args) {
14 /**
15 * 1.创建服务端ServerSocket对象
16 * 2.监听socket连接
17 * 3.通过返回的socket对象来获取io流里面的数据
18 * 4.打印数据
19 */
20 //1.
21 ServerSocket server=null;
22 try {
23 server=new ServerSocket(12345);
24 //2.
25 Socket client=server.accept();
26 //3.
27 //字节缓冲输入流,效率高
28 BufferedInputStream bis=new BufferedInputStream(client.getInputStream());
29 System.out.println("bis"+bis);
30
31 //给客服端发消息
32 OutputStream out=client.getOutputStream();
33 String result="欢迎你的到来:"+client.getLocalAddress();
34 out.write(result.getBytes());
35
36 //接收客服端胡消息
37 BufferedOutputStream os=new BufferedOutputStream(new FileOutputStream("客户端发过来的图片.jpg"));
38 byte[] b=new byte[1024];
39 int len=0;
40 while((len=bis.read(b))!=-1) {
41 os.write(b, 0, len);
42 os.flush();//刷出缓冲流中的数据,关闭连接前一定要刷,否则会数据缺失
43 }
44 //缓冲流
45 os.close();
46 client.close();
47 bis.close();
48 server.close();
49 } catch (IOException e) {
50 e.printStackTrace();
51 }
52 }
53 }
?二.编写TCP协议客服端
1 package demo.soket.tcp;
2 ?
3 import java.io.BufferedInputStream;
4 import java.io.BufferedOutputStream;
5 import java.io.FileInputStream;
6 import java.io.IOException;
7 import java.io.InputStream;
8 import java.net.Socket;
9 import java.net.UnknownHostException;
10 ?
11 /**
12 * TCP特点:
13 * 1.建立连接,形成传输数据的通道
14 * 2.在链接中进行大量数据传输
15 * 3.通过三次握完成连接,是可靠协议,所以没有对应的服务端时会报错
16 * 4.必建立连接,效率会稍低些
17 * @author Administrator
18 *
19 */
20 public class Client {
21 public static void main(String[] args) {
22 /**
23 * 1.创建一个客服端的socket对象
24 * 2.建立连接
25 * 3.通过io流在管道里面传输数据
26 * 写数据:输出流 getOutputStream()
27 * 接收数据:输入流 getInputStream()
28 * 4.关闭socket
29 */
30 //1.|2.
31 Socket client=null;
32 try {
33 client=new Socket("192.168.95.2",12345);
34 //3.
35 BufferedOutputStream os=new BufferedOutputStream(client.getOutputStream());
36 String path="C:\\Users\\Administrator\\Pictures\\微信图片_20200629170031.jpg";
37 BufferedInputStream buf=new BufferedInputStream(new FileInputStream(path));
38 byte[] b=new byte[1024];
39 int len=0;
40 while((len=buf.read(b))!=-1) {
41 os.write(b, 0, len);
42 os.flush();//关闭连接前一定要刷,否则会数据缺失
43 }
44
45 //获取服务端发过来的消息
46 InputStream in=client.getInputStream();
47 byte[] bi=new byte[1024];
48 int leng=0;
49 while((leng=in.read(bi))!=-1) {
50 System.out.println("收到服务器通知:"+new String(bi,0,leng));
51 }
52 //关闭读文件操作
53 buf.close();
54 os.close();
55 } catch (UnknownHostException e) {
56 e.printStackTrace();
57 } catch (IOException e) {
58 e.printStackTrace();
59 }finally {
60 //4.
61 if(client!=null) {
62 try {
63 client.close();
64 } catch (IOException e) {
65 e.printStackTrace();
66 }
67 }
68 }
69 }
70 }
?三 .demo运行
上一篇:Web服务器是什么?
文章标题:(4)优化TCP编写 客服端上传图片,服务端给客服端发消息问好
文章链接:http://soscw.com/index.php/essay/59617.html