socket客户端发送数据给服务端,服务端排序后返回
2013-05-15 19:14
447 查看
编写Socket客户端和服务器程序,客户端发送一个包含多个数字的字符串给服务器,服务器排序后返回给客户端。 客户端执行: java NumberSender -i 192.168.1.171 -p 8888 -d 99|789|3|0|-66 要求服务器能连续不断的服务。 服务器端: package test.socket; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { private int port = 5000; public Server1(int port){ this.port = port; } void start(){ ServerSocket server = null; Socket socket = null; DataInputStream reader = null; DataOutputStream writer = null; while(true){ try { server = new ServerSocket(port); socket = server.accept(); //监听端口 //输入流, 从客户端进入服务端的流对象 reader = new DataInputStream(socket.getInputStream()); //输出流, 从服务端去, 到客户端 writer = new DataOutputStream(socket.getOutputStream()); //从客户端读取信息 String line = reader.readUTF(); String[] tmp = line.split(","); double[] list = new double[tmp.length]; for(int i = 0;i<tmp.length;i++){ list[i] = Double.parseDouble(tmp[i]); } //选择排序 for(int i = 0; i < list.length; i ++){ int k = i; for(int j = i + 1; j < list.length; j ++){ if(list[j] <= list[k]) k = j; } if(k != i){ double temp = list[i]; list[i] = list[k]; list[k] = temp; } } StringBuffer tempList = new StringBuffer(); for(int i = 0; i<list.length;i++) tempList.append(list[i]+" "); //将信息返回客户端 writer.writeUTF(tempList.toString()); writer.flush(); } catch (NumberFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ try { writer.close(); reader.close(); server.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String[] args){ int port = 5000; String usageMsg = "格式错误,请在带参数的eclipse下按照格式输入:\r\n" + "java FileServer -p port"; if( 2 != args.length){ System.out.println(usageMsg); System.exit(1); } for(int i=0;i<args.length;i++){ if(args[i].equals("-p")||args[i].equals("-P")){ port = Integer.parseInt(args[i+1]); break; } } new Server(port).start(); } } 客户端: package test.socket; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; public class Client{ private String ipAddress = "localhost";//默认ip是本机 private int port = 5000; //默认端口是5000 private String numSeq; public Client(String ipAddress,String port,String numSeq){ this.ipAddress = ipAddress; this.port = Integer.parseInt(port); this.numSeq = numSeq; } void start(){ Socket socket = null; try { socket = new Socket(ipAddress,port); //输入流, 从服务器端进入Client的流对象。 DataInputStream is = new DataInputStream(socket.getInputStream()); //输出流, 从Client出去, 到服务器端。 DataOutputStream os = new DataOutputStream(socket.getOutputStream()); //将读取信息发送给服务器端 os.writeUTF(numSeq); //读取从服务器返回的信息 String temp = is.readUTF(); System.out.println(temp); } catch (NumberFormatException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ try{ socket.close(); } catch(IOException e){ e.printStackTrace(); } } } public static void main(String[] args){ //提示信息 String usageMsg = "请在带参数的eclipse下按照格式输入:\r\n" + " -i localhost -p port -d numSequence \r\n" + "numSequence分隔符为,"; if(6 != args.length){ System.out.println(usageMsg); System.exit(1); //异常终止 } String ipAddress = "localhost"; String port = "5000"; String numSeq = null; //从命令行获取参数 for(int i=0;i<args.length;i++){ if(args[i].equals("-i")||args[i].equals("-I")){ ipAddress = args[i+1]; } else if(args[i].equals("-p")||args[i].equals("-P")){ port = args[i+1]; } else if(args[i].equals("-d")||args[i].equals("-D")){ numSeq = args[i+1]; } } new Client(ipAddress,port,numSeq).start(); } }
相关文章推荐
- socket客户端发送数据给服务端,服务端排序后返回
- socket C 客户端发送数据到服务端,操作mysql数据库
- Socket客户端和服务端通讯 要求客户端发送数据后回显同样数据
- 一个简单的socket服务端和客户端程序:客户端发送数据给服务端,服务端接收到数据后再给客户端发送数据
- java socket编程,客户端发出检索字段,服务端查询数据并返回结果集
- socket客户端数据发送的数据服务端接收不到
- 编写Socket客户端和服务器程序,客户端发送一个包含多个数字的字符串给服务器,服务器排序后返回给客户端,要求服务器能连续不断地服务。
- Java Socket 服务端发送数据 客户端接收数据
- socket编程--客户端发送文件至服务端
- TCP通信-客户端给服务端发送数据 -聊天室版本3-02
- Query通过Ajax向PHP服务端发送请求并返回JSON数据
- (九)springmvc之json的处理(服务端发送json数据到客户端)
- TCP通信-客户端给服务端发送数据 -聊天室版本4
- Tcp服务端一直sleep,客户端不断发送数据产生的问题
- ext异步请求一个aspx/ashx/web service取得数据,服务端返回一个json.然后客户端接收并显示.
- java 网络 TCP客户端 发送数据 Socket
- TCP-客户端给服务端发送数据,服务端收到后,给客户端反馈信息
- 用socket实现客户端与服务器端的通信,要求在客户发送数据后能够回显相同的数据。
- ServerSocket和Socket建立通信(客户端发送消息服务器接收并返回到客户端接收输出)
- 简单socket服务(三)实现多客户端向服务器发送数据并保证服务器接收到数据