ServerSocket 服务端
是运行的服务端的ServerSocket。socket方式是点对点的属于TCP。
建立服务端频骤
- 建立端口并指定服务器IP
- 使用 accpet 方法接收连接,阻塞式方法
- 使用流通信
代码实现
建立服务器,建立通道对象
接收数据
发送数据
阻塞式的意思是,如果没有连接,就会一直等待。所以在while里面是一直处于等待状态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| import java.io.BufferedWriter; import java.io.DataInputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket;
public class SocketServer { public static void main(String[] args) throws IOException, IOException { ServerSocket serverSocket = new ServerSocket(8888); BufferedWriter bf = null; Socket socket = null; DataInputStream date = null;
String welcome = "欢迎使用我的宇宙无敌服务器";
while(true){ socket = serverSocket.accept(); System.out.println("Server: " + welcome);
bf = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream() )); bf.append(welcome); bf.newLine(); bf.flush();
date = new DataInputStream(socket.getInputStream()); String message = date.readUTF(); System.out.println(message);
} } }
|
Soket客户端
可以用来连接服务器
连接步骤
- 建立连接
- 使用I/O 学节流进行交互
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket;
public class SocketClient { public static void main(String[] args) throws IOException { Socket client = new Socket("localhost", 8888);
BufferedReader bf = new BufferedReader( new InputStreamReader( client.getInputStream() )); String getMessage = bf.readLine(); System.out.println(getMessage);
DataOutputStream ds = new DataOutputStream(client.getOutputStream()); ds.writeUTF("client: 获取到了服务器连接"); ds.flush(); ds.close(); } }
|