服务器(单线程版本 ):
import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class sigleThreadserver {
public static void main(String[] args) {
try {
//使用ServerSocket
ServerSocket serverSocket=new ServerSocket(6666);
System.out.printf("等待客户端连接......\n");
//accept 建立连接
Socket client=serverSocket.accept();
System.out.printf("有客户端连接成功,客户端口号为:"+client.getPort()+"\n");
//获取客户端输入输出流
Scanner clientInput=new Scanner(client.getInputStream());
clientInput.useDelimiter("\n");
PrintStream clientout=new PrintStream(client.getOutputStream(),true,"UTF-8");
if( clientInput.hasNextLine() ){
System.out.printf("客户端发来的信息:"+clientInput.nextLine());
}
clientout.print("hello client,I am server\n");
clientInput.close();
clientout.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端(单线程版本):
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class sigleThredclient {
public static void main(String[] args) {
try {
//创建套接字Socket 连接服务器
Socket client = new Socket("127.0.0.1",6666);
//
System.out.println("服务器发来的消息:"+client.getInetAddress());
//获取出入输出流
PrintStream out=new PrintStream(client.getOutputStream(),true,"UTF-8");
Scanner in =new Scanner(client.getInputStream());
in.useDelimiter("\n");
out.print("hi server,I am client\n");
if(in.hasNextLine()){
System.out.printf("服务端法处的消息为:"+in.nextLine());
}
in.close();
out.close();
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
测试结果:启动服务器时,等待客户端连接,给客户端发消息;
客户端连接后,服务器阻塞,接收服务器消息,并给服务器发送消息;
客户端断开后,服务器接收客户端消息;
客户端结果:
等待客户端连接......
有客户端连接成功,客户端口号为:59637
客户端发来的信息:hi server,I am client
客户端结果:
服务器地址:/127.0.0.1
服务端发出的消息为:hello client,I am server