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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田旭阳 黑马帝   /  2012-9-14 18:08  /  1916 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 田旭阳 于 2012-9-17 16:26 编辑

import java.net.*;
import java.io.*;
public class MyTimeClient{
public static void main(String args[]){
try{
Socket sc=new Socket("127.0.0.1",5432);
BufferedReader in=new BufferedReader(new InputStreamReader(sc.getInputStream()));
PrintWriter out=new PrintWriter(sc.getOutputStream());
String s=in.readLine();
System.out.println(s);
if(s.equals("password")){
out.println("abcd");
}
else{
System.out.println("不是时钟服务器");
System.exit(0);
}
s=in.readLine();
System.out.println(s);
if(s.equals("wrong")){
System.out.println("Wrong password");
}
else{
System.out.println(s);
}
out.close();
sc.close();
in.close();
}
catch(IOException e){}
}

}
这是客户端程序
import java.net.*;
import java.io.*;
import java.util.*;
public class MyTimeServer{
public static void main(String args[]){
try{
ServerSocket ss=new ServerSocket(5432);
while(true){
Socket s=ss.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out=new PrintWriter(s.getOutputStream());
out.println("password");
String pass=in.readLine();
if(pass.equals("abcd")){
String dt=new Date().toString();
System.out.print(dt);
out.println(dt);
}
else{
out.println("wrong");
}
out.close();
s.close();
in.close();
}
}
catch(IOException e)
{System.out.println("输入输出异常!");}
}

}
这是服务器端程序
这个程序中服务器端连接上客户端以后,向客户端输入“password”客户端接收到以后若输入正确的密码,则服务器向客户端发送系统当前的时间,(若把密码abcd换掉,则输入密码错误,此时在客户端打印出“wrong password”).
我感觉自己没有写错,但是运行不出正确的结果,特向各位高手请教,在下感激不尽。




1 个回复

正序浏览
哥们换个流吧,使用数据流,里面分别有readUTF、writerUTF方法,这个比较省空间传递数据速度快,常用
我该写了下,可以正常使用了,你的代码,客户端中String s = in.readLine()没读到数据,阻塞在哪了
客户端代码
  1. package socket;

  2. import java.net.*;
  3. import java.io.*;

  4. public class MyTimeClient {
  5.         public static void main(String args[]) {
  6.                 DataOutputStream out = null;
  7.                 DataInputStream in = null;
  8.                 try {
  9.                         Socket sc = new Socket("127.0.0.1", 5432);
  10.                         in = new DataInputStream(sc.getInputStream());
  11.                         out = new DataOutputStream(sc.getOutputStream());
  12.                         String s = in.readUTF();
  13.                         System.out.println(s);
  14.                         if (s.equals("password")) {
  15.                                 out.writeUTF("abcd");
  16.                         } else {
  17.                                 System.out.println("不是时钟服务器");
  18.                                 System.exit(0);
  19.                         }
  20.                         s = in.readUTF();
  21.                         System.out.println(s);
  22.                         if (s.equals("wrong")) {
  23.                                 System.out.println("Wrong password");
  24.                         } else {
  25.                                 System.out.println(s);
  26.                         }
  27.                         out.close();
  28.                         sc.close();
  29.                         in.close();
  30.                 } catch (IOException e) {
  31.                 }
  32.         }
  33. }
复制代码
服务器端代码
  1. package socket;

  2. import java.io.DataInputStream;
  3. import java.io.DataOutputStream;
  4. import java.io.IOException;
  5. import java.net.ServerSocket;
  6. import java.net.Socket;
  7. import java.util.Date;

  8. public class MyTimeServer{
  9.         public static void main(String args[]) {
  10.                 DataOutputStream out = null;
  11.                 DataInputStream in = null;
  12.                 try {
  13.                         ServerSocket ss = new ServerSocket(5432);
  14.                         while (true) {
  15.                                 Socket s = ss.accept();
  16.                                 System.out.println("a client connection...");                               
  17.                                 out = new DataOutputStream(s.getOutputStream());
  18.                                 in = new DataInputStream(s.getInputStream());
  19.                                 out.writeUTF("password");
  20.                                 String pass = in.readUTF();
  21.                                 if (pass.equals("abcd")) {
  22.                                         String dt = new Date().toString();
  23.                                         System.out.print(dt);                               
  24.                                         out.writeUTF(dt);
  25.                                 } else {                                       
  26.                                         out.writeUTF("wrong");
  27.                                 }
  28.                                 out.close();
  29.                                 s.close();
  30.                                 in.close();
  31.                         }
  32.                 } catch (IOException e) {
  33.                         System.out.println("输入输出异常!");
  34.                 }
  35.         }

  36. }
复制代码
你自己去试试吧。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马