一、Socket编程
在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。
二、案例
1.服务端
- ① 创建ServerSocket对象,绑定监听端口
- ② 通过accept()方法监听客户端请求
- ③ 连接建立后,通过输入流读取客户端发送的请求信息
- ④ 通过输出流向客户端发送相应信息
- ⑤ 关闭相关资源
1 package cn.kgc.sockettest.demo1; 2 3 import java.io.*; 4 import java.net.ServerSocket; 5 import java.net.socket; 6 7 /** 8 * 服务端 9 * 10 * @author 11 * @create 2019-07-23 14:16 12 **/ 13 public class server { 14 public static void main(String[] args) { 15 try { 16 ServerSocket serverSocket = new ServerSocket(8080); 17 System.out.println("服务器启动完成...监听启动!"); 18 //开启监听,等待客户端的访问 19 Socket socket = serverSocket.accept(); 20 // 获取输入流,因为是客户端向服务器端发送了数据 21 InputStream inputStream = socket.getInputStream(); 22 // 创建一个缓冲流 23 BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); 24 String info = null; 25 while ((info = br.readLine())!=null){ 26 System.out.println("这里是服务端 客户端是:"+info); 27 } 28 //向客户端做出响应 29 OutputStream outputStream = socket.getoutputStream(); 30 info = "这里是服务器端,我们接受到了你的请求信息,正在处理...处理完成!"; 31 outputStream.write(info.getBytes()); 32 outputStream.close(); 33 } catch (IOException e) { 34 e.printstacktrace(); 35 } 36 } 37 }
2.客户端
- ① 创建Socket对象,指明需要连接的服务器的地址和端口号
- ② 连接建立后,通过输出流想服务器端发送请求信息
- ③ 通过输入流获取服务器响应的信息
- ④ 关闭响应资源
package cn.kgc.sockettest.demo1; import java.io.*; import java.net.socket; /** * 客户端 * * @author * @create 2019-07-23 14:17 **/ public class Client { public static void main(String[] args) { try { Socket socket = new Socket("localhost",8080); OutputStream outputStream = socket.getoutputStream(); String info = "你好啊!"; //输出! outputStream.write(info.getBytes()); socket.shutdownOutput(); //接收服务器端的响应 InputStream inputStream = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); while ((info = br.readLine())!=null){ System.out.println("接收到了服务端的响应!" + info); } //刷新缓冲区 outputStream.flush(); outputStream.close(); inputStream.close(); socket.close(); } catch (IOException e) { e.printstacktrace(); } } }
然后,先执行服务端,再执行客户端的代码就可以了。这只是个小案例,有什么不足之处,请各位指教!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。