@Sarah
2015-12-24T16:14:40.000000Z
字数 2578
阅读 1349
java笔记
是放进一个buff里了
发送信息时,Java程序创建一个包含了待发送信息的DatagramPacket实例,并将其作为参数传递给DatagramSocket类的send()方法。接收信息时,Java程序首先创建一个DatagramPacket实例,该实例中预先分配了一些空间(一个字节数组byte[]),并将接收到的信息存放在该空间中。然后把该实例作为参数传递给DatagramSocket类的receive()方法。
除传输的信息本身外,每个DatagramPacket实例中还附加了地址和端口信息,其具体含义取决于该数据报文是被发送还是被接收。若是要发送的数据报文, DatagramPacket实例中的地址则指明了目的地址和端口号,若是接收到的数据报文, DatagramPacket实例中的地址则指明了所收信息的源地址。因此,服务器端可以修改接收到的DatagramPacket实例的缓存区内容,再将这个实例连同修改后的信息一起,发回给它的源地址。在DatagramPacket的内部也有length和offset字段,分别定义了数据信息在缓存区的起始位置和字节数。
用datagrampocket 可以多对多同时接送消息,而不是之前只能是一对一,
//⬇️客户端和服务器之间可以互相发送消息
用的线程,这样不用等一方结束信息另一方才可以发,而是可以同时发
数据报:一方信息发出去以后不用管另一方是否接收到,
//senderpackage socket;import java.io.*;import java.net.*;public class Sender extends Thread {//新建个线程Socket socket;BufferedWriter bw;public Sender(Socket s) throws Exception{if(s!=null){socket=s;bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));}else {throw new Exception("Socket对象不能为空!");}}public void run(){try {BufferedReader kr = new BufferedReader(new InputStreamReader(System.in));while(true){String t=kr.readLine();bw.write(t+"\n");bw.flush();if(t.equals("exit"))System.exit(0);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
//receiverpackage socket;import java.io.*;import java.net.*;public class Receiver extends Thread{//新建个线程Socket socket;public Receiver(Socket s) throws Exception{if(s!=null){socket=s;}else {throw new Exception("error!");}}public void run(){try {BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));do {String t=br.readLine();System.out.println(t);if(t.equals("exit"))System.exit(0);} while (true);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
//客户端package socket;import java.net.*;import java.io.*;public class Client {public static void main(String[] args) throws Exception {System.err.print("客户端和127.0.0.1:8000建立连接...");Socket s = new Socket("127.0.0.1", 8000);System.out.println("ok.");Sender sender=new Sender(s);//调用snder类sender.start();Receiver receiver=new Receiver(s);//调用receiver类receiver.start();}}
//服务器package socket;import java.net.*;import java.io.*;public class Server {public static void main(String[] args) throws Exception {System.err.print("在8000端口建立连接...");ServerSocket ss = new ServerSocket(8000);System.out.println("ok.");System.out.print("等待客户端的连接...");Socket s = ss.accept();System.out.println("ok.");Sender sender=new Sender(s);//调用sendersender.start();Receiver receiver=new Receiver(s);//调用receiverreceiver.start();}}
接下来要做的小程序
1日程表:用IO写在文件里
查看
录入任务
删除任务
修改任务
声音提醒 用现成的播放器
2四六级背单词:中英文
每次背20个
记录每次背单词的时间年月日小时,隔多久就提醒复习
她万一忘了就提醒给背单词啦 上次是什么时候
可以练习 给四个选项 选英文
3聊天室
好友列表 显示在线/离线
显示好友详细信息
聊天
传输
注册
修改信息
选择好友