Socket通信
【摘要】 Socket通信一.使用TCP协议通信1. 客户端// 1.创建一个Socket对象,并指定服务端的IP及端口号 Socket socket = new Socket("...", );// 2.创建一个InputStream对象,读取要发送的文件InputStream inputStream = new FileInputStream("e://a.txt"); // 3.获取Socket...
Socket通信
一.使用TCP协议通信
1. 客户端
// 1.创建一个Socket对象,并指定服务端的IP及端口号 Socket socket = new Socket("...", ); // 2.创建一个InputStream对象,读取要发送的文件 InputStream inputStream = new FileInputStream("e://a.txt"); // 3.获取Socket的OutputStream对象,用于发送数据 OutputStream outputStream = socket.getOutputStream(); // 4.存放读取的本地文件 byte buffer[] = new byte[1024]; int temp = 10; while ((temp = inputStream.read(buffer)) != -1) { outputStream.write(buffer, , temp); } // 5.发送读取的数据到服务端 outputStream.flush(); // 6.关闭socket通信,关流 inputStream.close(); outputStream.close(); socket.close();
2. 服务端
// 1.声明一个ServerSocket对象,并让这个Socket在端口监听 ServerSocket serverSocket = new ServerSocket(); // 2.接受客户端所发送的请求;如果客户端没有发送数据,那么该线程就停滞不继续 Socket socket = serverSocket.accept(); // 3.从Socket当中得到InputStream对象 InputStream inputStream = socket.getInputStream(); // 4.从InputStream当中读取客户端所发送的数据 byte buffer[] = new byte[1024]; int temp = 10; while ((temp = inputStream.read(buffer)) != -) { System.out.println(new String(buffer, , temp)); } // 5.从Socket当中得到OutputStream对象 OutputStream output = socket.getOutputStream(); // 6.向客户端发送信息 output.write(str.getBytes("gbk")); output.flush(); // 7.关闭socket通信,关流 serverSocket.close(); inputStream.close(); output.close();
二.使用UDP协议通信
1.客户端发送数据
// 1.创建DatagramSocket对象并指定一个端口号;如果客户端需要接收服务器的返回数据, 还需使用这个端口号来receive DatagramSocket socket = new DatagramSocket(...); // 2.把IP地址转换为网络地址 InetAddress serverAddress = InetAddress.getByName("..."); // 3.设置要发送的报文 String str = "[;fjks;]"; // 4.把字符串转换为字节数组 byte data[] = str.getBytes(); // 5.创建一个DatagramPacket对象,用于发送数据 //参数一:要发送的数据 参数二:数据的长度 参数三:服务端的网络地址 参数四:服务器端端口号 DatagramPacket packet = new DatagramPacket(data,data.length ,serverAddress , ...); // 6.把数据发送到服务端 socket.send(packet);
2.客户端接收服务器返回的数据
// 1.实例化的端口号要和发送时的socket一致,否则收不到data DatagramSocket socket = new DatagramSocket(...); byte data[] = new byte[ * ]; // 2.创建一个DatagramPacket对象,用于接收数据 //参数一:要接受的data 参数二:data的长度 DatagramPacket packet = new DatagramPacket(data, data.length); // 3.接收数据 socket.receive(packet); // 4.把接收到的data转换为String字符串 String result = new String(packet.getData(), packet.getOffset(),packet.getLength()); // 5.关闭socket通信 socket.close();
3.服务器接收客户端
// 1.创建一个DatagramSocket对象,并指定监听端口 DatagramSocket socket = new DatagramSocket(); // 2.创建一个byte类型的数组,用于存放接收到的数据 byte data[] = new byte[*]; // 3.创建一个DatagramPacket对象,并指定DatagramPacket对象的大小 DatagramPacket packet = new DatagramPacket(data,data.length); // 4.读取接收到的数据 socket.receive(packet); // 5.把客户端发送的数据转换为字符串 //使用三个参数的String方法。参数一:数据包 参数二:起始位置 参数三:数据包长 String result = new String(packet.getData(),packet.getOffset() ,packet.getLength());
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)