问题化教学,问题化学习。
写一个简单的聊天工具
需求:
1类似于qq的聊天群,可以有多人一起聊天。
要建立
客户端:
package basejava;
import java.io.*;
import java.net.*;
import static tools.Print.*;
public class DailyAdviceClient {
publicvoid go(){
try{
Socket s = newSocket("127.0.0.1",4444); 链接服务器端
InputStreamReaderar = new InputStreamReader(s.getInputStream());
读取服务器端的消息
BufferedReaderrea = new BufferedReader(ar);
Stringad = rea.readLine();
print(ad);
}catch(IOExceptionex){
ex.printStackTrace();
}
}
publicstatic void main(String[] args) {
DailyAdviceClientda = new DailyAdviceClient();
da.go();
}
}
服务器
package basejava;
import java.io.*;
import java.net.*;
import static tools.Print.*;
public class DailyAdviceServer {
public void go(){
try{
ServerSocket ss = new ServerSocket(4444);
PrintWriterpw = new PrintWriter(ss.accept().getOutputStream());
pw.write("我是服务器端");
pw.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
public static void main(String[] args) {
DailyAdviceServer da = new DailyAdviceServer();
da.go();
}
}
先执行以下服务器代码,然后再执行客户端,打印结果:我是服务器端
获取了服务器端的消息,但是如何把消息给服务器呢?即,服务器端如何接受到客户端的代码呢?
你继承了Thread就不应该再实现Runnable接口了,因为Thread已经承继了Runnable接口,
或者你不继承Thread类而实现是Runnable,但不管怎样,你都应该重写run()方法。。。
方法1.继承Thread,然后重写run(),
MyThread mt=new MyThread();//MyThread是Thread的继承类
mt.start();
方法2.实现Runnable,实现run()函数,
MyRunnalbe mr=new MyRunnable();//实现Runnable接口的类
Thread td=new Thread(mr);
td.start();