编写Socket客户端和服务器程序,客户端发送一个包含多个数字的字符串给服务器,服务器排序后返回给客户端,要求服务器能连续不断地服务。
2015-08-11 08:31
573 查看
客户端执行: java NumberSender -i 127.0.0.1 -p 8888 -d 99|789|3|0|-66
服务器端回送的结果:-66|0|3|99|789
操作步骤:
(1)客户端程序NumberSender发送请求到服务器端,并带上参数;
(2)Socket服务器端NumberSocketServer程序拆分接收的数字;
(3)Socket服务器端对接收到的数字进行冒泡排序;
(4)Socket服务器端程序将结果返回给客户端;
(5)客户端程序NumberSender接收并显示。
Socket服务器端程序:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class NumberSocketServer {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket ss = new ServerSocket(8888);
while (true) {
Socket socket = ss.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String line = in.readLine();
System.out.println("接收到的内容:" + line);
String[] array = line.split("\\|");
int[] num = new int[array.length];
for (int i = 0; i < num.length; i++) {
num[i] = Integer.parseInt(array[i]);
}
for (int i = 0; i < num.length - 1; i++) {
for (int j = i + 1; j < num.length; j++) {
if (num[i] > num[j]) {
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < num.length; i++) {
sb.append(num[i]);
if (i != num.length - 1)
sb.append("|");
}
PrintWriter out = new PrintWriter(socket.getOutputStream(),
true);
out.println(sb.toString());
out.close();
in.close();
socket.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Socket客户端程序:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class NumberSender {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Socket socket = new Socket("127.0.0.1", 8888);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("99|789|3|0|-66");
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
System.out.println(in.readLine());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服务器端回送的结果:-66|0|3|99|789
操作步骤:
(1)客户端程序NumberSender发送请求到服务器端,并带上参数;
(2)Socket服务器端NumberSocketServer程序拆分接收的数字;
(3)Socket服务器端对接收到的数字进行冒泡排序;
(4)Socket服务器端程序将结果返回给客户端;
(5)客户端程序NumberSender接收并显示。
Socket服务器端程序:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class NumberSocketServer {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket ss = new ServerSocket(8888);
while (true) {
Socket socket = ss.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String line = in.readLine();
System.out.println("接收到的内容:" + line);
String[] array = line.split("\\|");
int[] num = new int[array.length];
for (int i = 0; i < num.length; i++) {
num[i] = Integer.parseInt(array[i]);
}
for (int i = 0; i < num.length - 1; i++) {
for (int j = i + 1; j < num.length; j++) {
if (num[i] > num[j]) {
int temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < num.length; i++) {
sb.append(num[i]);
if (i != num.length - 1)
sb.append("|");
}
PrintWriter out = new PrintWriter(socket.getOutputStream(),
true);
out.println(sb.toString());
out.close();
in.close();
socket.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Socket客户端程序:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class NumberSender {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Socket socket = new Socket("127.0.0.1", 8888);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("99|789|3|0|-66");
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
System.out.println(in.readLine());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相关文章推荐
- tableView联动
- HDU - 3715 Go Deeper (二分 + 2-SAT)
- linux下的解压命令详解
- 抓包函数-pcap_next
- 测量平差之间接平差
- 2015-8-10工作日志
- 剑指Offer面试题44(Java版):扑克牌的顺序
- MFC对Excel数据进行读取
- Algorithms-64.Minimum Path Sum
- Binary Tree Postorder Traversal
- scikit-learn(不常用,仅了解知识点):2.2. Manifold learning(流形学习)
- BZOJ3585: mex
- A006-AndroidManifest.xml解析
- 小甲鱼C++笔记(上)1-24
- int main(int argc, char **argv)的使用方法。
- poj 1742 Coins(多重背包)
- POJ 3080 Blue Jeans kmp+暴力枚举
- 231 - power of two
- js运动基础1
- ISP于IAP的区别