Client(客户端) / Server(服务端) 程序
Posted ***半夏微凉***
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Client(客户端) / Server(服务端) 程序相关的知识,希望对你有一定的参考价值。
1. 客户端程序
import java.io.*; import java.net.*; public class Client { public static void main(String args[]) { try{ Socket socket=new Socket("127.0.0.1",4700); //向本机的4700端口发出客户请求 BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); //由系统标准输入设备构造BufferedReader对象 PrintWriter os=new PrintWriter(socket.getOutputStream()); //由Socket对象得到输出流,并构造PrintWriter对象 BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); //由Socket对象得到输入流,并构造相应的BufferedReader对象 //从系统标准输入读入一字符串 String readline=sin.readLine(); while(!readline.equals("bye")){ //若从标准输入读入的字符串为 "bye"则停止循环 os.println(readline); //将从系统标准输入读入的字符串输出到Server os.flush(); //刷新输出流,使Server马上收到该字符串 System.out.println("Client:"+readline); //在系统标准输出上打印读入的字符串 System.out.println("Server:"+is.readLine()); //从Server读入一字符串,并打印到标准输出上 readline=sin.readLine(); //从系统标准输入读入一字符串 } //继续循环 os.close(); //关闭Socket输出流 is.close(); //关闭Socket输入流 socket.close(); //关闭Socket }catch(Exception e) { System.out.println("Error"+e); //出错,则打印出错信息 } } }
2. 服务器端程序
import java.io.*; import java.net.*; import java.applet.Applet; public class TalkServer{ public static void main(String args[]) { ServerSocket server=null; Socket socket=null; String line; try{ //创建一个ServerSocket在端口4700监听客户请求 server=new ServerSocket(4700); //使用accept()阻塞等待客户请求,有客户 //请求到来则产生一个Socket对象,并继续执行 socket=server.accept(); //由Socket对象得到输入流,并构造相应的BufferedReader对象 BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); //由Socket对象得到输出流,并构造PrintWriter对象 PrintWriter os=newPrintWriter(socket.getOutputStream()); //由系统标准输入设备构造BufferedReader对象 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //在标准输出上打印从客户端读入的字符串 System.out.println("Client:"+is.readLine()); //从标准输入读入一字符串 line=sin.readLine(); //如果该字符串为 "bye",则停止循环 while(!line.equals("bye")){ //向客户端输出该字符串 os.println(line); //刷新输出流,使Client马上收到该字符串 os.flush(); //在系统标准输出上打印读入的字符串 System.out.println("Server:"+line); //从Client读入一字符串,并打印到标准输出上 System.out.println("Client:"+is.readLine()); //从系统标准输入读入一字符串 line=sin.readLine(); } //继续循环 }catch(Exception e){ System.out.println("Error:"+e); //出错,打印出错信息 }finally{ os.close(); //关闭Socket输出流 is.close(); //关闭Socket输入流 socket.close(); //关闭Socket server.close(); //关闭ServerSocket } } }
支持多客户的client/server程序
前面的Client/Server程序只能实现Server和一个客户的对话。在实际应用中,往往是在服务器上运行一个永久的程序,它可以接收来自其他多个客户端的请求,提供相应的服务。为了实现在服务器方给多个客户提供服务的功能,需要对上 面的程序进行改造,利用多线程实现多客户机制。服务器总是在指定的端口上监听是否有客户请求,一旦监听到客户请求,服务器就会启动一个专门的服务线程来响 应该客户的请求,而服务器本身在启动完线程之后马上又进入监听状态,等待下一个客户的到来。
以上是关于Client(客户端) / Server(服务端) 程序的主要内容,如果未能解决你的问题,请参考以下文章
Groovy使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器端开发 )
Groovy使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 客户端开发 )
openGL之API学习(二零八)客户端 服务器端 client server
C# socket编程时 如何实现server端关闭了能提示Client端