Topic: 关于socket |
Print this page |
1.关于socket | Copy to clipboard |
Posted by: terry39 Posted on: 2003-04-07 13:15 Socket socket=new Socket("127.0.0.1",6667); DataInputStream in=new DataInputStream(socket.getInputStream()); DataOutputStream out=new DataOutputStream(socket.getOutputStream()); 当使用 in.readUTf() 时 程序就停在此处一直等待服务器的信息 不能往下执行了 若我要同时 一边在 in.readUTF() 一边可以随时 out.writeUTF 如何实现? ... 在这里搜索了一写帖子 都没有类似于实现这个目的的 .. |
2.Re:关于socket [Re: terry39] | Copy to clipboard |
Posted by: Jove Posted on: 2003-04-07 13:20 那就用多线程吧 我写过一个p2p双机聊天软件,就是开Socket 一面写,一面读 |
3.我写的 就是用线程的 [Re: terry39] | Copy to clipboard |
Posted by: terry39 Posted on: 2003-04-07 15:49 /* *这个试验的目的: * 尝试在等待server的信息的时候 进行发送message */ import java.io.*; import java.net.*; public class LxdClient implements Runnable{ private Socket client; private BufferedReader clientReader; private PrintWriter clientWriter; private DataOutputStream dos; private boolean enable; public LxdClient(){ try{ enable=false; client=new Socket("127.0.0.1",6667); clientReader=new BufferedReader(new InputStreamReader(client.getInputStream())); clientWriter=new PrintWriter(client.getOutputStream()); dos=new DataOutputStream(client.getOutputStream()); }catch(UnknownHostException ukhexp){} catch(IOException ioexp){} enable=true; } public void run(){ String s; try{ while(true){ s=clientReader.readLine(); if(s!=null) System.out.println; } }catch(IOException ioexp){} } public void sendData(String s){ try{ // clientWriter.write; // clientWriter.flush(); dos.writeUTF; }catch(IOException ioexp){} } public boolean enable(){ return enable; } public static void main(String[] args){ System.out.println("new a LxdClient ..."); LxdClient lxdsocket=new LxdClient(); lxdsocket.run(); System.out.println("send data ..."); lxdsocket.sendData("What is this ???"); } } 始终不出现 send data ... 呀 |
4.Re:我写的 就是用线程的 [Re: terry39] | Copy to clipboard |
Posted by: Jove Posted on: 2003-04-07 16:20 不是直接 new LxdClient().run() 这样的话,和implements Runnable没什么关系,还是单线程的 应该是 Thread thread=new Thread(new LxdClient()); |
5.Re:关于socket [Re: terry39] | Copy to clipboard |
Posted by: terry39 Posted on: 2003-04-07 16:34 这样的话 产生的是 隐含对象 new LxdClient() 我如何控制 LxdClient 的实例 以进行发送信息? (如何调用 sendData() 方法?) 我不太明白 .... |
6.Re:关于socket [Re: terry39] | Copy to clipboard |
Posted by: Jove Posted on: 2003-04-07 17:10 hehe, 发觉你挺可爱的 如果不要匿名变量,那就给个变量名嘛 LxdClient lxd=new LxdClient(); |
7.thks [Re: terry39] | Copy to clipboard |
Posted by: terry39 Posted on: 2003-04-07 17:46 非常感谢 ... 我明白你的意思了 ... implements Runnable 并非是写了一个能单独执行的线程 需要 Thread(...) 才能在程序里 创建一个线程 来执行 实现Runnable的类的对象 是不是这样理解? .... 我刚才试了一下 好象可以了 ...我再编写一个server来验证一下 ... 非常感谢 .... |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |