package com.yuan.testcs; import java.awt.datatransfer.StringSelection; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class Myclient { public static void main(String args[]){ try{ Socket socket=new Socket("127.0.0.1",5678); //请求链接server 端 //经过链接获取server上面的输入输出流 PrintWriter out=new PrintWriter(socket.getOutputStream()); BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); //建立标准输入流,从键盘接收数据 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //从键盘输入读取一行,发送到server端,当用户输入byte时候结束链接 String s; do{ s=sin.readLine(); out.println(s); out.flush(); if(!s.equals("bye")){ System.out.println("@server response:"+in.readLine()); }else { System.out.println("The connection is closed"); } }while(!s.equals("bye")); out.close(); in.close(); socket.close(); }catch (Exception e) { System.out.println("Error:"+e); } } }
package com.yuan.testcs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) { try { //创建server socket 而且等待链接 ServerSocket server=new ServerSocket(5678); Socket socket=server.accept(); //链接创建 经过Socket获取链接的输入和输出流 BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out=new PrintWriter(socket.getOutputStream()); //建立标准输入流,从键盘输入数据 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //先读取client 发送的数据,而后从标准输入读取数据发送给client //当收到 bye 字符关闭链接 String s; while(!(s=in.readLine()).equals("bye")){ System.out.println("#Received from client:"+s); out.println(sin.readLine()); out.flush(); } System.out.println("The connection is closing"); out.close(); in.close(); socket.close(); server.close(); } catch (Exception e) { // TODO: handle exception System.out.println("Error:"+e); } } }
由于是在本地测试的,因此须要开启两个Dos 客户端。另外程序是用Eclipse写的,因此考虑直接用Java 的命令来执行。java
可是在用Javac 编译的时候提示,不是本地命令,可是Java 命令能够运行,因此考虑是参数配置的问题。最后发现是JAVA_HOME 里面的jdk 路径写的不对致使,以前安装了jre,最后安装了jdk 。socket
但是事实上class文件已经有了。因而查看了博文:http://blog.csdn.net/harryweasley/article/details/45559129/测试
说是由于个人Java文件放在包里面,因此找不到类。正确的方法是:先用Javac -d . MyServer.java 这样编译下来就带有包的结构了。而后再用Java 包名称.MyServer 来运行,MyClient也是同样的操做。spa