您的位置:首页 > 其它

Socket通信,实现单客户端和服务器交互的C/S结构

2016-12-07 18:23 330 查看
首先创建客户端程序:

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);}
}

}

运行时有个先后顺序,要先运行服务器端的程序,再运行客户端的程序,下面是我程序的运行结果截图。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: