网络与线程

概述:1、客户端必须要认识服务器 2、服务器必须要认识所有的客户端 3、需要import java.net.*

  • 要让客户端能够工作
  1. 如何建立客户端与服务器之间的初始连接
  2. 如何传送信息给服务器
  3. 如何接受来自服务器的信息
Socket chatSocket=new Socket("127.0.0.1",5000);//建立与服务器端口的Socket连接
InputStreamReader stream=new InputStreamReader(chatSocket.getInputStream());//从Socket取得字节输入流并链接到InputStreamReader上转成字符
BufferedReader reader=new BufferedReader(stream);//建立缓冲区来读取
String line=new reader.readLine();
//写数据到服务器,也可以用BufferedWriter
PrintWriter writer=new PrintWriter(chatSocket.getOutputStream());//通过PrintWriter衔接String和Socket两端
writer.println("message to send");
writer.print("another message");
  • 编写简单的服务器程序(一对Socket,一个等待用户请求的ServerSocket,另一个与用户通信的Socket)
ServerSocket serverSock=new ServerSocket(4242);//对特定端口创建出ServerSocket
Socket clientSock=new Socket("172.0.0.1",4242);//客户端对服务器建立Socket
Socket serverSock=serverSock.accept();//服务器创建出通信用的新Socket
PrintWriter writer=new PrintWriter(serverSock.getOutputStream());//发送信息客户端

accept()方法会在等待用户的Socket连接时闲置。当用户连上来时,此方法会返回一个Socket(在不同的端口上)以便与客户端通信

  • 如何使客户端能同时发信息与接收信息(线程)
Runnable threadJob=new MyRunnable();//建立Runnable对象(线程的任务)
Thread myThread=new Thread(threadJob);//Runnable对象告诉线程把run()方法放到运行空间去执行
myThread.setName("My Thread");//帮线程取名字
myThread.start();//启动线程

Runnable是个接口,线程的任务被定义在任何实现Runnable的类上。Thread类已经实现了Runnable接口





posted @ 2018-12-19 14:44  liaoxuefan  阅读(125)  评论(0编辑  收藏  举报