日期:2014-05-20 浏览次数:20958 次
import java.net.* ;
import java.util.* ;
import java.io.* ;
public class ClientTest{
public static void main(String[]args){
long start = System.currentTimeMillis() ;
start() ;
long end = System.currentTimeMillis() ;
System.out.println("总共连接时间:"+(end-start)+"(ms)") ;
}
public static void start(){
try{
Socket s = new Socket() ;
try{
s.connect(new InetSocketAddress("127.0.0.1",9000),10000);//连接不得超过10秒钟
OutputStream out = s.getOutputStream();
InputStream in = s.getInputStream () ;
boolean done = false ;
while(!done)
{
Scanner serverSay = new Scanner(in);
String line = "" ;
/***
* 目的:一开启Client,就先尝试接收服务端发过来的信息
* 问题:运行程序,并未接到SocketTest服务端传来的提示信息,
* 我自己调试,发现貌似出现了阻塞,hasNextLine()阻塞了,
* 导致接收不到数据,但我不知道怎么改?
*/
while( serverSay.hasNextLine() ){
line = serverSay.nextLine() ;
System.out.println(line);
}
System.out.print("我说 : ") ;
String iStr = consoleRead(null) ; //说话的内容
byte[] serverSayBytes = iStr.getBytes(); //把数据组成字节流
out.write(serverSayBytes) ; //发送数据
out.flush();
}// end while
}//end try
finally{
s.close() ;
}
}//end try
catch(Exception err){
err.printStackTrace() ;
}
}
/**
* @param: 在输入控制台之前,控制台出现的提示语
* @return:在控制台输入的语句,以'!'、'!'、'\n'结束
*/
public static String consoleRead(String prompt/*输入控制台前,控制台的提示语*/)
throws IOException{
if( null != prompt )
System.out.println(prompt);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine() ;
return str ;
}
}
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class ServerTread extends Thread
{
private Socket socket;
public ServerTread(Socket socket)
{
this.socket = socket;
}
@Override
public void run()
{
try
{