A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈佳龙 中级黑马   /  2012-10-10 14:55  /  1165 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沈佳龙 于 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值。  不知道问题出在哪,控制台没有输出。。。

评分

参与人数 1技术分 +1 收起 理由
田建 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 zczcyc0201 于 2012-10-10 15:50 编辑

str = in.readUTF();
out.writeInt(i);
把这两条语句调换一下位置试试
我觉得要是先执行str = in.readUTF();线程会等待,就不会把i写出去了,服务器自然也就没有反应。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
客户端改为这样:
  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, 下载次数: 21)

QQ截图20121010174036.jpg

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马