本来作为server的机器只是利用socket来提供一个监听的端口来实现与client之间的
通信呀!要想实现多client的处理,那么 就该在sevver端实现多线程的方法,一旦
某个client连接到了server那么就启动一个对他处理的线程,而server继续监听其他的
client访问!
ServerSocket s=new ServerSocket(PORT);线程中的
public viod run()
{ .....
Socket client = s.accept();
client.setKeepAlive(true);
Thread servant = new Thread(); //处理client的线程
servant.start()
............}
通信呀!要想实现多client的处理,那么 就该在sevver端实现多线程的方法,一旦
某个client连接到了server那么就启动一个对他处理的线程,而server继续监听其他的
client访问!
ServerSocket s=new ServerSocket(PORT);线程中的
public viod run()
{ .....
Socket client = s.accept();
client.setKeepAlive(true);
Thread servant = new Thread(); //处理client的线程
servant.start()
............}
解决方案 »
- 指定概率的算法
- 【提问】为什么窗口运行后不能点击叉叉关闭窗口,而且实现不了功能
- hashtable.tostring() 怎么用??
- 我在eclipse环境下写了一个与sqlserver2000连接的程序,但总是出现错误,
- 一个parseFloat(String str)的问题
- 谁给我分析一下这两段代码呀?谢谢哦~~
- 在java中用什么容器可以打开象doc,txt,pdf,gif,jpg等文件格式对应的应用程序?
- 求助JAVA的一本较好的查询手册(中文)
- null.$SwitchMap$com$moor$imkf$event$KFLoginEvent[KFLoginEvent.ordinal()]求解!
- 求大神这个怎么写?
- 朋友的作业不什么做,帮忙来提问。(用java建一个类的问题)很简单。
- hashtable & hashmap 中的.put("",此处不能为null)
二、对于网络数据传输,如ServerSocket/Socket,DatagramSocket等类。
三、自己制定协议、数据格式等给你例子//发送方
//用法: $java SenderSide desthost destport filename
public class SenderSide
{
public static void main(String args[]) throws Exception
{
new SenderSide(args[0],Integer.parseInt(args[1]),args[2]); //从参数解析出接收方主机地址、端口、要发送的文件名
}
public SenderSide(String dest_host,int dest_port,String fileName) throws Exception
{
java.net.Socket sock = new java.net.Socket(dest_host,dest_port); //
java.io.OutputStream sock_os = sock.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(fileName);
int b;
//发送文件内容到接收方
while((b=fis.read()) != -1){
sock_os.write(b);
}
fis.close();
sock_os.close();
sock.close();
}
}//接收方
//用法:$java ReceiverSide fileNameToSave
public class ReceiverSide
{
public static void main(String args[]) throws Exception
{
java.net.ServerSocket server = new java.net.ServerSocket();
System.out.println("address:"+server.getInetAddress()+" port:"+server.getPort()); //将这里显示的地址在发送端作为参数
java.net.Socket sock = server.accept();
java.io.InputStream sock_is = socket.getInputStream();
java.io.FileOutputStream fos = new java.io.FileOutputStream(args[0]);
int b;
while((b=sock_is.read()) != -1){
fos.write(b);
}
fos.close();
sock_is.close();
sock.close();
server.close();
}
}先运行接收方,以待存储的文件名为参数,运行后会显示接收方主机的地址和端口号
再运行发送方,以主机地址、端口号和要发送文件的文件名作执行参数
这只是一个非常简单的协议(简直就不能称为协议),没有考虑到各种情况,也没有错误处理等,仅仅能作为一个参考
一位一位发,效率会不会低啊?