socket客户端发送数据给服务端,服务端排序后返回
2013-01-26 11:45
561 查看
编写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客户端和服务端通讯 要求客户端发送数据后回显同样数据
- 一个简单的socket服务端和客户端程序:客户端发送数据给服务端,服务端接收到数据后再给客户端发送数据
- 编写Socket客户端和服务器程序,客户端发送一个包含多个数字的字符串给服务器,服务器排序后返回给客户端,要求服务器能连续不断地服务。
- java socket编程,客户端发出检索字段,服务端查询数据并返回结果集
- Java Socket 服务端发送数据 客户端接收数据
- TCP与UDP的异同(服务端接收数据,客户端发送数据)
- 模仿客户端通过http协议向服务端发送和接收数据
- 客户端给服务端发送文本。服务端将文本转成大写在返回给客户端
- 分享:Java socket ,多客户端同时与服务端不停的交换数据
- (九)springmvc之json的处理(服务端发送json数据到客户端)
- HELP,多线程通过同一个socket发送数据到服务端,socket底动会不会同步呢?
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- C# iocp通讯客户端只能发送数据,无法接收服务端发送的数据
- java 网络 TCP客户端 发送数据 Socket
- JS客户端获取服务端返回数据方法总结
- jQuery通过Ajax向PHP服务端发送请求并返回JSON数据
- Android 通过Socket实现手机端向PC发送数据,并接受PC端返回的数据