Java基础之Socket编程

来源:互联网 发布:marginnote windows版 编辑:程序博客网 时间:2024/06/05 00:22

1. Socket的作用

用于计算机与计算机之前通过网络传输数据通讯-->Socket


2. 基本网络知识

IP:计算机在网络的唯一标示,通过IP地址就可以找到一台计算机

端口:操作系统上软件的唯一标记。80(Web默认端口),3306(MySQL默认端口)1024以前的端口都被系统占用了。端口的范围:1~65535。定义端口的时候最好使用1024以后的端口。

协议:UDP  TCP

2.1 UDP TCP的区别

UDP:无连接,速度快。不保证数据的完整性。

TCP:通过三次握手机制,形成数据传输通道(字节流),速度慢。保证数据的完整性,如果丢包,会重发!


3. Socket编程示例:

3.1 服务端代码:(需求:发一段话到客户端,然后接受从客户端发回来的数据打印)

try {// 1.创建服务器端Socket对象(服务端IP:192.168.10.1)ServerSocket ss = new ServerSocket(8888);System.out.println("服务器已经启动,正在监听8888端口...");// 2.不断接收客户端的请求while (true) {final Socket socket = ss.accept();System.out.println("接收客户端:"+socket);//每个客户端的处理启动一个新的线程new Thread(){public void run(){try{// 获取客户端(访问者)的iP地址String ip = socket.getInetAddress().getHostAddress();// 3.构建数据发送的通道BufferedWriter br = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));// 3.1 构建数据接收通道BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));// 4.发送数据br.write("你们好,请发你们的名字过来\r\n");br.flush();//手动刷新缓存区,发送数据System.out.println("来自于" + ip + ",说:" + reader.readLine());//5.关闭资源br.close();reader.close();socket.close();}catch(Exception e){throw new RuntimeException(e);}}}.start();}} catch (Exception e) {throw new RuntimeException(e);}

3.2 客户端代码:(接收服务端发出的数据,打印,然后把自己的名字发送到服务端。 服务端IP:192.168.10.1, 端口:8888)

// 1.创建客户端的Socket对象try {Socket socket = new Socket("192.168.10.1", 8888);// 2.构建和服务器端的数据接收通道BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));// 构建和服务器端的数据发送通道BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));// 3.接收服务器发送的数据System.out.println(reader.readLine());// 4.发送数据到服务器端writer.write("我的名字eric");writer.newLine();writer.flush();//手动刷新//5.关闭资源reader.close();socket.close();} catch (Exception e) {throw new RuntimeException(e);}


0 0