黑马程序员技术交流社区

标题: 客户端与服务器问题 [打印本页]

作者: 沈佳龙    时间: 2012-10-10 14:55
标题: 客户端与服务器问题
本帖最后由 沈佳龙 于 2012-10-10 18:13 编辑

客户端代码:
package com.sjl.ServerAndClient;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

public class Client1 {
        public static void main(String[] args) {
                Socket mysocket = null;
                DataInputStream in = null;
                DataOutputStream out = null;
                String str = null;
                try {
                        mysocket =  new Socket("localhost",1420);
                } catch (IOException e) {System.out.println("无法连接");}
               
                try{
                        in = new DataInputStream(mysocket.getInputStream());
                        out = new DataOutputStream(mysocket.getOutputStream());
               
                for(int i=1;i<=100;i++){
                        str = in.readUTF();
                        out.writeInt(i);
                        System.out.println("客户端收到:"+str);
                        Thread.sleep(500);
                }
                }catch (Exception e){}
        }
}
服务器端代码:
package com.sjl.ServerAndClient;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server1 {
        public static void main(String[] args) {
                ServerSocket server= null;
                Socket you = null;
                DataInputStream in = null;
                DataOutputStream out = null;
               
                try{
                        server = new ServerSocket(1420);
                        you = server.accept();
                }catch (IOException e1){
                        System.out.println("连接不上");
                }
               
                try{
                        in = new DataInputStream(you.getInputStream());
                        out = new DataOutputStream(you.getOutputStream());
                        int m = 0;
                        while(true){
                        m = in.readInt();
                        out.writeUTF("你说的数字对应的字符为"+(char)m);
                        System.out.println("服务器收到:"+m);
                        Thread.sleep(500);
                        }        
                }catch(IOException e){
                        System.out.println(""+e);
                }catch(InterruptedException e2){}
               
               
        }
}

客户端发送一个数值,服务器回复一个ASCII值。  不知道问题出在哪,控制台没有输出。。。
作者: zczcyc0201    时间: 2012-10-10 15:49
本帖最后由 zczcyc0201 于 2012-10-10 15:50 编辑

str = in.readUTF();
out.writeInt(i);
把这两条语句调换一下位置试试
我觉得要是先执行str = in.readUTF();线程会等待,就不会把i写出去了,服务器自然也就没有反应。
作者: 张忠豹    时间: 2012-10-10 17:41
客户端改为这样:
  1. for(int i=1;i<=10;i++){
  2.                         out.writeInt(i);
  3.                             System.out.println("客户端开始发送数据");
  4.                     str = in.readUTF();                     
  5.                     System.out.println("客户端收到:"+str);
  6.                     Thread.sleep(500);
  7.                 }
复制代码
服务器端,最好将强制转换去掉,或者改为这样
  1. while(true){
  2.                         m = in.readInt();
  3.                         out.writeUTF("你说的数字对应的字符为"+m);
  4.                         System.out.println("服务器收到:"+(char)m);
  5.                         Thread.sleep(500);
  6.                         }      
复制代码
因为ascii码前几位是这样的,输出的时候答案可能与你所想的不太一样

QQ截图20121010174036.jpg (14.78 KB, 下载次数: 30)

QQ截图20121010174036.jpg





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2