socket 建立网络连接,client && server
client代码:
package socket; import java.io.IOException; import java.net.Socket; /** * 客户端_聊天室 * * @author James(ZouZhaoPeng) */ public class Client { /* * java.net.Socket套接字(连接网络的类,类似插座) * Socket封装了TCP协议的通讯细节,使用它就可以与服务器建议网路连接 * 并且进行通讯,这里的通讯是两条流的读写完成与服务器端的数据交换 */ private Socket socket; /* * 客户端构造方法,用于初始化客户端 */ public Client() { try { /* * 实例化socket时需要传入两个参数: * 1.服务端的地址信息(IP) * 2.服务器端打开的端口 * * 我们可以通过IP找到网路上的服务器计算机,通过端口号可以连接 * 服务端的应用程序。 */ System.out.println("正在连接服务端...."); socket = new Socket("localhost",8808); System.out.println("连接成功!"); } catch (IOException e) { e.printStackTrace(); } } /** * 客户端开始工作的method */ public void start() { } public static void main(String[] args) { Client client = new Client(); client.start(); } }
server代码:
package socket; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /** * 服务器端_聊天室 * * @author James(ZouZhaoPeng) */ public class Server { /** * 服务端使用的是ServerSocket * 它有两个作用: * 1.向系统申请端口 * 2.接受请求该端口的所有客户端的连接。 */ private ServerSocket server; /* * 服务端构造方法,用来初始化服务器 */ public Server() { try { /* * 实例化的同时向系统申请端口号,客户端socket就是通过这个 * 端口与服务器建立连接的,如果该端口号被系统其它的程序占用 * 就会报错:java.net.BindException:address already in use:JVM_bind; * * 出现该错误解决办法: * 1.检查自己是否已经开启两次服务器,端口冲突 * 2.如果没有启动两次,表示有其他程序占用该端口了。 */ System.out.println("正在启动服务器。。。"); server = new ServerSocket(8808); System.out.println("服务器启动成功!"); } catch (IOException e) { e.printStackTrace(); } } /* * 服务器开始工作的方法 */ public void start() { try { /* * ServerSocket提供的方法: * Socket accept() * 该方法是一个阻塞方法,调用该方法后,程序会一直卡住,此时开始等待 * 客户端client连接,一旦客户端实例化socket并且连接服务器这边申请的 * 端口时,accept方法会立即返回一个socket实例,此时等于和客户端 * 建立的连接,服务器通过返回的这个socket就可以和客户端进行交互了 * * 多次调用accept方法可以接收多个客户端的连接 */ System.out.println("等待客户端连接。。。"); Socket socket = server.accept(); System.out.println("客户端连接成功。。。"); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Server server = new Server(); server.start(); } }
如有错误,望费心指出。 感激涕零。