您的位置:首页 > 编程语言 > Java开发

Java的Socket通信(多Clients/Server模型)

2015-10-09 23:02 316 查看
所谓多clients/Server模型,就是说一个server程序可以与多个client连接,对各个client的事务进行处理。其他的不说了,直接上代码,大家应该可以看懂的。这是我在vijio上“偷”测试数据的程序,把Main程序(也就是client)叫上去,就可以把读入的测试数据发到我电脑上的Receiver上来

Client端程序

import java.io.*;
import java.net.*;
import java.util.*;

public class Main
{

public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
Socket socket = new Socket("***.***.***.***", 4700);
PrintWriter os = new PrintWriter(socket.getOutputStream());

Scanner sc = new Scanner(System.in);
int n, c;
n = sc.nextInt();
c = sc.nextInt();
int[] fa = new int
;
for (int i = 1; i <= n-1; i++) fa[i] = sc.nextInt();
sc.close();

os.println(String.valueOf(n));
os.println(String.valueOf(c));
for (int i = 1; i <= n-1; i++) os.println(String.valueOf(fa[i]));
os.flush();
os.close();
socket.close();
}

}


服务器端

import java.io.*;
import java.net.*;

public class Receiver
{
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
ServerSocket server = new ServerSocket(4700);
for (int i = 0; i < 20; i++)
{
Socket socket = server.accept();
Runnable r = new ThreadHandler(socket, i);
Thread t = new Thread(r);
t.start();
}
server.close();
}
}

class ThreadHandler implements Runnable
{
private Socket socket;
private int num;
public ThreadHandler(Socket i, int index)
{
socket = i;
num = index;
}
@Override
public void run()
{
// TODO Auto-generated method stub
try
{
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));

FileWriter out = new FileWriter(new File("Input/input" + num + ".txt"));

String tmp;
int n;
tmp = is.readLine();
n = Integer.parseInt(tmp);

out.write(tmp + "\n");
out.write(is.readLine() + "\n");

for (int j = 1; j <= n-1; j++)
{
out.write(is.readLine() + "\n");
}
out.flush();
out.close();

is.close();
socket.close();
} catch (Exception e)
{
e.printStackTrace();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: