使用简单的ServiceSockt实现服务端与客户端的通信
2017-02-13 00:17
459 查看
在客户/服务器通信模式中, 服务器端需要创建监听端口的 ServerSocket, ServerSocket 负责接收客户连接请求. 我们模拟用eclipse模拟服务端,用windows的命令行界面来模拟客户端。
我们的电脑一般没有开启telnet服务,我们先在电脑上开启telnet服务,我的电脑(windows10)下面如何开启telnet如下图所示
我们先写一个方法,相当于在客户端向服务端发送消息,而服务端只能接受消息无法发送消息
我们来测试一下这个方法是否有用,打开windows命令行界面输入“telnet 192.168.20.152 8888”,192.168.20.152是我的ip,8888是我开放的端口
在按住ctrl + [+] ,最后按住enter,就可以在上面显示文字了,不然不会显示出来的。
这个方法写的是成功的,实现了我们想要的功能
客户端和用户端实现相互通讯的方法,但是有缺陷,只能一问一答
测试的结果
最后实现客户端向服务端传送命令,从服务端获取文件的内容,在传输到客户端
当我们输入C:/Users/caowa/workspace/ServiceSockt/src/com/ServiceSockt/ServiceSockt.java这条指令时,就会获取一个java文件的详细内容返回给我们
我们的电脑一般没有开启telnet服务,我们先在电脑上开启telnet服务,我的电脑(windows10)下面如何开启telnet如下图所示
我们先写一个方法,相当于在客户端向服务端发送消息,而服务端只能接受消息无法发送消息
public static void test1() { try { // 创建一个服务端,我们监听8888的端口 ServerSocket serverSocket =new ServerSocket(8888); // 等待客户端连接过来 Socket socket= serverSocket.accept(); // 将客户端的内容放入流中,然后将流用Scanner包住 InputStream is=socket.getInputStream(); Scanner scanner=new Scanner(is); // 将流中的内容读取出来,输入到控制台(服务端) while(scanner.hasNextLine()){ System.out.println(scanner.nextLine()); } scanner.close(); is.close(); socket.close(); serverSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
我们来测试一下这个方法是否有用,打开windows命令行界面输入“telnet 192.168.20.152 8888”,192.168.20.152是我的ip,8888是我开放的端口
在按住ctrl + [+] ,最后按住enter,就可以在上面显示文字了,不然不会显示出来的。
这个方法写的是成功的,实现了我们想要的功能
客户端和用户端实现相互通讯的方法,但是有缺陷,只能一问一答
// 客户端和用户端实现相互通讯的方法,但是有缺陷,只能一问一答 public static void test3() { ServerSocket serverSocket; try { serverSocket = new ServerSocket(8888); Socket socket=serverSocket.accept(); // 简单一点,将is流直接传入到Scanner里面,服务端的输入 Scanner severScanner=new Scanner(System.in); // 客户端的outputStream PrintWriter socketPrint=new PrintWriter(socket.getOutputStream()); // 客户端的inputStream Scanner socketScanner=new Scanner(socket.getInputStream()); while(severScanner.hasNextLine()){ // 服务端向客户端输出消息 socketPrint.println(severScanner.nextLine()); socketPrint.flush(); // 如果 if(socketScanner.hasNextLine()){ System.out.println(socketScanner.nextLine()); } } // } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
测试的结果
最后实现客户端向服务端传送命令,从服务端获取文件的内容,在传输到客户端
public static void test5() { try { ServerSocket serverSocket=new ServerSocket(8888 ); Socket socket=serverSocket.accept(); // 客户端的输入流 Scanner socketScanner=new Scanner(socket.getInputStream()); // 服务端的输入流 Scanner serverScanner=new Scanner(System.in); // 客户端的输出流 PrintWriter socketPrintWrite=new PrintWriter(socket.getOutputStream()); while(socketScanner.hasNextLine()){ String FileName=socketScanner.nextLine(); Scanner file=getFile(FileName); while(file.hasNextLine()){ String str=file.nextLine(); socketPrintWrite.println(str); socketPrintWrite.flush(); } file.close(); } socketScanner.close(); serverScanner.close(); socketPrintWrite.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //这个方法是获取文件的内容 public static Scanner getFile(String FileName) { Scanner scanner = null; try { scanner=new Scanner( new FileInputStream(FileName)); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(scanner!=null); return scanner; }
当我们输入C:/Users/caowa/workspace/ServiceSockt/src/com/ServiceSockt/ServiceSockt.java这条指令时,就会获取一个java文件的详细内容返回给我们
相关文章推荐
- 【网络编程】使用流式套接字实现简单的客户端/服务端通信过程
- 使用socket实现简单的客户端和服务端通信(C#语言)
- 使用流式套接字实现简单的客户端/服务端通信过程
- golang使用net库实现一个简单的服务端和客户端通信
- Flex使用BlazerDS实现客户端与服务端通信
- 使用Unity3D内置Network实现简单的客户端与服务端相连接
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- Android 使用socket 实现简单的客户端和服务器端互相通信
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答 推荐
- thinkphp使用ajax、jquery、Mysql实现了简单的客户端通信功能
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
- linux网络编程之用socket实现简单客户端和服务端的通信(基于TCP)
- 利用Tcp和socket实现的客户端与服务端的简单通信
- Socket编程服务端和客户端互相通信,实现简单的聊天
- 网络编程:使用Socket实现简单的服务器和客户端的通信
- Java review--NIO实例:实现服务端和客户端的简单通信
- Java中利用socket实现简单的服务端与客户端的通信(基础级)
- 传智播客-一个服务端和多个客户端间的通信的简单实现
- webservice通信 服务端 客户端简单实现
- Java中利用socket实现简单的服务端与客户端的通信(入门级)