服务器
package com.yuzhiyun.socket
import java.io.BufferedReader
import java.io.IOException
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.io.PrintWriter
import java.net.ServerSocket
import java.net.Socket
import java.util.Scanner
public class Server {
//1-选择服务器端口
public static final int PORT=9999
public static void main(String[] args) throws IOException {
//2-启动服务器,监听端口
ServerSocket ss=new ServerSocket(PORT)
System.out.println("Server starting....")
//3-用户访问时,获得用户的IP(电话主机)和port(分机)
Socket s=ss.accept()
System.out.println("客户端ip以及端口"+s.getInetAddress().getHostAddress()+": "+s.getPort())
//4-与用户建立IO通道
BufferedReader in=new BufferedReader(
new InputStreamReader(s.getInputStream())
)
//true会自动清除缓存
PrintWriter out=new PrintWriter(
new OutputStreamWriter(s.getOutputStream()),true)
//5-与用户交流
String msgFromServer=in.readLine()
System.out.println("client: "+msgFromServer)
System.out.println("请输入给客户端的信息")
Scanner scanner=new Scanner(System.in)
String msgString=scanner.nextLine()
out.println(msgString)
System.out.println("server end*****")
s.close()
ss.close()
}
}
客户端
package com.yuzhiyun.socket
import java.io.BufferedReader
import java.io.IOException
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.io.PrintWriter
import java.net.Socket
import java.net.UnknownHostException
import java.util.Scanner
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
//1-确定服务器地址和服务端口号
String url="172.27.35.1"
int port=Server.PORT
//2-与服务器连接
Socket s=new Socket(url,port)
//3-建立与服务器IO通道
BufferedReader in=new BufferedReader(
new InputStreamReader(s.getInputStream())
)
PrintWriter out=new PrintWriter(
new OutputStreamWriter(s.getOutputStream()),true)
//4-与服务器进行交流
System.out.println("请输入给server的信息")
Scanner scanner=new Scanner(System.in)
String msgString=scanner.nextLine()
out.println(msgString)
//此时,客户端程序处于等待服务器信息的状态
String msgFromServer=in.readLine()
System.out.println("server: "+msgFromServer)
System.out.println("client end*****")
}
}
注
1、添加while循环即可实现来回无限次互发消息,通过判断是否exit来停止交互
2、也可以使用多线程,使得一个server处理多个client