当前位置:  技术问答>java相关

jbulider编程中的socket问题(我只有这些分了)

    来源: 互联网  发布时间:2015-03-04

    本文导语:  小弟用jbuilder5.0学习java网络编程,编了一个c/s程序,  server用  ServerSocket soc=new ServerSocket(8000);  Socket server_socket=soc.accept();  DataInputStream in=new DataInputStream(server_socket.getInputStream());  DataOutputStream out=new DataOutputStrea...

小弟用jbuilder5.0学习java网络编程,编了一个c/s程序, 
server用 
ServerSocket soc=new ServerSocket(8000); 
Socket server_socket=soc.accept(); 
DataInputStream in=new DataInputStream(server_socket.getInputStream()); 
DataOutputStream out=new DataOutputStream(server_socket.getOutputStream()); 
client端用 
Socket client_socket=new Socker("localhost",8000); 
DataInputStream in=new DataInputStream(client_socket.getInputStream()); 
DataOutputStream out=new DataOutputStream(client_socket.getOutputStream()); 
二者可以连接上,但是当client段调用out.writeUTF(string), 
server端调用in.readUTF(string)时, 
为何只有当client端调用两次out.writeUTF(string)时,server端 
才能收到一次数据,而且时两次传输中前面的那一次的数据。 

这究竟是为什么?

|
按你的要求,小弟做了这个程序,发送两次,均送到。试一试把
import java.io.*;
import java.net.*;

public class TestTCP{
    public static void main(String args[]){
        Server s = new Server(8000);
        try{
            Thread.sleep(100);
        }catch(Exception e){
            e.printStackTrace();
        }
        Client c = new Client("localhost",8000);
        c.send("Hello");
        c.send("World!");
        s.print();
    }
}
class Server implements Runnable{
    private ServerSocket server;
    private Socket client;
    public Server(int port){
        try{
            System.out.println("constructing server...");
            server = new ServerSocket(port);
            Thread t = new Thread(this);
            t.start();
        }catch(Exception e){
            e.printStackTrace();
        }
        
    }
    public void print(){
        try{
            BufferedReader br = new BufferedReader
                (new InputStreamReader(client.getInputStream()));
            
            String str;
            str = br.readLine();
            while(str!=null){
                System.out.println("server get msg:""+str+""");
                str = br.readLine();
            }
        }catch(Exception e){
            e.printStackTrace();
        }        
    }
    public void run(){
        try{
            System.out.println("listening for client...");
            client = server.accept();
            }catch(Exception e){
            e.printStackTrace();
        }
    }
}
class Client{
    private Socket client;
    public Client(String host,int port){
        try{        
            System.out.println("Constructing client...");
            client = new Socket(host,port);
        }catch(Exception e){
            e.printStackTrace();
        }
        
    }
    public void send(String str){
        try{
            OutputStreamWriter osw = new OutputStreamWriter
                            (client.getOutputStream());
            System.out.println("Client sending msg:""+str+""");
            osw.write(str+"n");     
            osw.flush(); 
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 谁知道哪里有jbulider4下载,我的机器跑jbulider5很慢!
  • 请问JBulider 4的序列号谁知到?能否提供给小弟?谢谢
  • 各位兄弟,急救我是初学者,关于JBULID的问题?
  • 高分求购jbulider6得注册码,企业版本,个人版本都要
  • 在那儿能下到Jbulider7?谢谢
  • 急寻JBulider7的注册码
  • JBulider 5的光标为什么老是乱跳?
  • jbulider5.0能在2000上装吗?
  • 哪里有JBulider的电子书
  • 谁有Jbulider5的注册吗?谢谢
  • 有关在JBULIDER5中开发EJB的问题
  • 如何更新JBulider的JDK呢?
  • 问一个简单的关于JBulider的配置问题!
  • 怎样在JBULIDER中使用滚轮啊?
  • 哪位大虾用过JBulider4?进来看看
  • 为什么我的Jbulider里面的中文字符串全部都是 小方格
  • JBULIDER 4的许可证号;安装上给分;;;;
  • 在jbulider中,我想Run一个class如何能控制某些文件(如jsp)不被编译呢?
  • 有没有JBulider6的好书,介绍一下。
  • 那位大哥哥有将rational rose 2001与jbulider 6.0配合使用的经验啊?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3