服务端代码
ServerSocket:此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。
package org.lanqiao;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(12345);
Socket s = ss.accept();
InputStream is = s.getInputStream();
OutputStream outputStream = s.getOutputStream();
Scanner sc = new Scanner(System.in);
while (true) {
byte[] bys = new byte[1024];
int len = is.read(bys);
String string = new String(bys, 0, len);
System.out.println(string);
String str = sc.nextLine();
if (str.equals("关闭")) {
s.close();
break;
}
byte[] by = str.getBytes();
outputStream.write(by);
}
}
}
客户端代码
Socket:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
package org.lanqiao;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class ClientDemo {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket s = new Socket("本地ip地址", 12345);// 改为本地的IP地址和指定的端口号
Scanner sc = new Scanner(System.in);
OutputStream outputStream = s.getOutputStream();
while (true) {
System.out.println("聊天内容:");
String str = sc.nextLine();
if(str.equals("关闭")) {
break;
}
byte[] bys = str.getBytes();
outputStream.write(bys);
InputStream is = s.getInputStream();
byte[] byt = new byte[1024];
int len;
len = is.read(byt);
String string = new String(byt, 0, len);
System.out.println(string);
}
}
}
先运行服务端再运行客户端,就可以实现聊天了。