首先创建客户端程序:
package FirstPackages;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client
{
public static void main(String args[])
{
try
{
Socket socket=new Socket("127.0.0.1",9000);//向本机的9000端口发出客户请求
System.out.println("客户端开启");
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));//InputStreamReader是字节流通向字符流的桥梁,从底层流读取字节
//BufferedReader 从字符输入流中读取文本
PrintWriter os=new PrintWriter(socket.getOutputStream());//getOutputStream()返回此套接字的输出流
String readline;
readline=in.readLine();
while(!readline.equals("bye"))//若读入的字符串为bye,就停止循环
{
os.println(readline);//将读入的字符串输出到Server
os.flush();//刷新输出流,使Server马上收到该字符串
readline=in.readLine();
}
os.close();//关闭Socket输出流
socket.close();//关闭Socket
}catch(IOException e){System.out.println("error:"+e);}
}
}
然后创建服务器端程序:
package FirstPackages;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server
{
public static void main(String args[])
{
try{
ServerSocket server=new ServerSocket(9000);//在端口9000监听客户请求
System.out.println("服务已开启");
Socket socket=server.accept();//使用accept()阻塞等待客户请求
System.out.println("接收到客户端的访问");
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line=" ";
while(line!=null&&!line.equals("bye"))
{
line=is.readLine();
System.out.println("Server:"+line);
}
is.close();
socket.close();
server.close();
}catch(IOException e){System.out.println("error:"+e);}
}
}
运行时有个先后顺序,要先运行服务器端的程序,再运行客户端的程序,下面是我程序的运行结果截图。