在网上看了很多关于Thread和Socket的资料,项目中也用到不少,但是都是比较简单,或者是用一些现成的,现在想从头开始,慢慢的再学习。希望能和各位前辈进行交流。接触的需求好多一开始比较简单,后来就慢慢复杂了,我想这个学的过程也是,先来个简单的,然后再慢慢的进行完善。好了,不废话了。
场景:客户端将键盘输入的字符通过socket发送到服务端,当输入的字符为“exit”时,程序退出,服务端仅仅将接收到的信息打印出来。
服务端代码:1.public class SocketServer extends Thread{
2.
3. private java.net.ServerSocket ss;
4. private java.net.Socket s;
5. @Override
6. public void run() {
7. try{
8. while(true){
9. this.s=this.ss.accept();
10. java.io.BufferedReader reader =
11. new BufferedReader(
12. new java.io.InputStreamReader(
13. s.getInputStream()));
14. String str=reader.readLine();
16. while(str!=null){
18. System.out.println(str);
19. str=reader.readLine();
20. }
21. reader.close();
22. this.s.close();
23. }
24. }catch(Exception ex){
25. ex.printStackTrace();
26. }
27. }
28. public SocketServer(int port){
29. try{
30. System.out.println("服务端启动.......");
31. this.ss=new ServerSocket(port);
32. }catch(Exception ex){
33. ex.printStackTrace();
34. }
35. }
36. public static void main(String[] args){
37. Thread t=new SocketServer(8888);
38. t.start();
39. }
40. }
客户端的代码:
1.public class SocketClient{
2. public static void main(String[] args)throws Exception {
3. java.net.Socket s=new java.net.Socket("127.0.0.1",8888);
4. java.io.BufferedWriter out=new java.io.BufferedWriter(
5. new java.io.OutputStreamWriter(
6. new java.io.BufferedOutputStream(s.getOutputStream())));
7.
8. java.io.BufferedReader reader=new BufferedReader(
9. new java.io.InputStreamReader(System.in));
10.
11. String str=reader.readLine();
12. while(!"exit".equals(str)){
13. out.write(str + "\n");
14. out.flush();
15. str=reader.readLine();
16. }
17. reader.close();
18. out.close();
19. }
20. } 下一步准备把客户端发送方式调整下,改为多线程发送,并采用线程池的方式,希望和各位多多交流。
场景:客户端将键盘输入的字符通过socket发送到服务端,当输入的字符为“exit”时,程序退出,服务端仅仅将接收到的信息打印出来。
服务端代码:1.public class SocketServer extends Thread{
2.
3. private java.net.ServerSocket ss;
4. private java.net.Socket s;
5. @Override
6. public void run() {
7. try{
8. while(true){
9. this.s=this.ss.accept();
10. java.io.BufferedReader reader =
11. new BufferedReader(
12. new java.io.InputStreamReader(
13. s.getInputStream()));
14. String str=reader.readLine();
16. while(str!=null){
18. System.out.println(str);
19. str=reader.readLine();
20. }
21. reader.close();
22. this.s.close();
23. }
24. }catch(Exception ex){
25. ex.printStackTrace();
26. }
27. }
28. public SocketServer(int port){
29. try{
30. System.out.println("服务端启动.......");
31. this.ss=new ServerSocket(port);
32. }catch(Exception ex){
33. ex.printStackTrace();
34. }
35. }
36. public static void main(String[] args){
37. Thread t=new SocketServer(8888);
38. t.start();
39. }
40. }
客户端的代码:
1.public class SocketClient{
2. public static void main(String[] args)throws Exception {
3. java.net.Socket s=new java.net.Socket("127.0.0.1",8888);
4. java.io.BufferedWriter out=new java.io.BufferedWriter(
5. new java.io.OutputStreamWriter(
6. new java.io.BufferedOutputStream(s.getOutputStream())));
7.
8. java.io.BufferedReader reader=new BufferedReader(
9. new java.io.InputStreamReader(System.in));
10.
11. String str=reader.readLine();
12. while(!"exit".equals(str)){
13. out.write(str + "\n");
14. out.flush();
15. str=reader.readLine();
16. }
17. reader.close();
18. out.close();
19. }
20. } 下一步准备把客户端发送方式调整下,改为多线程发送,并采用线程池的方式,希望和各位多多交流。
解决方案 »
- struts2.1 xml 验证的错误信息总重复显示, why? 急!
- jacob byte的word文件转换为html
- DBF格式文件下载路径怎么自定义(在线求助!!!)
- 包中类文件找不到需要的方法
- hibernate中的query为何无法执行?
- 上下文路径
- 新手请教打包bean为jar文件时产生的问题
- 关于JBUILDER8的问题!!!!!!!!!!!!!!!!!!!!!!!!
- 谁买了电子工业出版社的《精通EJB》这本书??想问一下写得怎么样????????
- JQUERY遍历打包前台数据JSON
- 如何提高存储过程的速度,当数据比较少的时候很快 数据一多久很慢很慢
- 我这里有一个小的聊天系统的代码,setText(str)不生效?(马士兵版)
一般等待多个请求线程响应结束时会用到