Java 简单的Socket通讯的服务器端实现

来源:互联网 发布:免费摄像头监控软件 编辑:程序博客网 时间:2024/05/22 16:49

最近学安卓开发,看到书上这个Socket通讯的实例,按照书上打的时候客户端一直连接不上,可能是网络问题或者虚拟机连接问题,所以就用控制台实现的客户端,这里是服务器端的。话不多说,直接贴代码

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/** * 服务器的Socket类 * @author WantnRun * 2013年6月23日 17:29:10 */public class MyServerSocket {/** * 定义端口监听 */private int ServerPort=8886;/** * 声明服务器套接字对象 */private ServerSocket serverSocket=null;/** * 声明输出流对象 */private OutputStream outputStream=null;/** * 声明输入流对象 */private InputStream inputStream=null;/** * 声明PrintWriter对象,用于将数据发送给客户端 */private PrintWriter printWriter=null;/** * 声明客户端的套接字对象 */private Socket socket=null;/** * 声明BufferedReader对象,用于读取接收的数据 */private BufferedReader reader=null;/** * 程序入口 * @param args */public static void  main(String[] args){new MyServerSocket();}/** * 构造方法 */public MyServerSocket(){//根据指定的端口号,创建套接字,该套接字在指定的端口上提供网络通信try {serverSocket=new ServerSocket(ServerPort);System.out.println("等待客户端连接");//用accept方法等待客户端的连接socket=serverSocket.accept();System.out.println("客户端已连接");//获取套接字输出流outputStream=socket.getOutputStream();//获取套接字输入流inputStream=socket.getInputStream();//根据OutputStream创建PrintWrite对象printWriter=new PrintWriter(outputStream,true);//根据inputStream创建BufferedReader对象reader=new BufferedReader(new InputStreamReader(inputStream));//根据system.in创建BufferedReader对象BufferedReader in=new BufferedReader(new InputStreamReader(System.in));while(true){String message="";System.out.println("开始接收消息");message=reader.readLine();//接收客户端消息System.out.println("客户端:"+message);if(message.toUpperCase().equals("BYE")){//若消息为bye则结束通信break;}message=in.readLine();//接收键盘输入//把消息发送给客户端printWriter.println(message);}outputStream.close();//关闭输出流inputStream.close();//关闭输入流socket.close();//关闭套接字serverSocket.close();//关闭服务器套接字System.out.println("客户端连接关闭");} catch (IOException e) {e.printStackTrace();}}}