博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第四次过程性考核
阅读量:4987 次
发布时间:2019-06-12

本文共 4558 字,大约阅读时间需要 15 分钟。

码云地址“https://gitee.com/”

使用套接写连接编写一个简单的聊天室程序,客户端主函数放在Client_Main.java文件中,服务器端主函数放在Server_Main.java文件中 

要求: 

1.客户端从控制台进行输入,并将客户端的输出内容和时间保存到“学号.txt”文件中

2.服务器端读取到客户端的程序后,给客户端以回应,并将客户端的输入内容与服务端的输出内容、时间保存到文本文件中

3.要求服务器端可以实现同时与多个客户端进行通信,与每一个客户端通信的内容,保存为一个“学号_ip.txt”的文件

4..提交文件结果包括:代码,通信后生成的txt文件 

设计思路

我所作答的题目是张三和李四使用用户数据报文相互发送和接受数据包,程序运行时,一方所在的主机在命令行输入数据发送给另一方所在的主机,显示。首先用DatagramSocket的另一个构造方法DatagramSocket(int port)创建一个对象,其中的参数和待接收的数据包端口号相同,对象mail_in使用方法receive(DatagramSocket)接受数据包。

运用知识点

套接字,UDP通信,使用DatagramSocket()方法构建对象

代码片段

(顺序为:客户端,服务器)

import java.net.*;import java.util.*; public class Client_Main {    public static void main(String[] args) {        // TODO Auto-generated method stub        Scanner scanner=new Scanner(System.in);        Thread readData;        ReceiveLetterForC receive=new ReceiveLetterForC();        try{            readData=new Thread(receive);            readData.start();            byte [] buffer=new byte [1];            InetAddress address=InetAddress.getByName("10.43.11.91");            DatagramPacket dataPack=            new DatagramPacket(buffer,buffer.length,address,888);            DatagramSocket postman=new DatagramSocket();            System.out.print("输入法送给服务器的消息:");            while(scanner.hasNext()){                String mess=scanner.nextLine();                buffer=mess.getBytes();                if(mess.length()==0)                    System.exit(0);                buffer=mess.getBytes();                dataPack.setData(buffer);                postman.send(dataPack);                System.out.print("继续输入法送给服务器的消息:");            }                     }        catch (Exception e){            System.out.println(e);        }     } }
import java.net.*; public class ReceiveLetterForC implements Runnable{    public void run(){        DatagramPacket pack=null;        DatagramSocket postman=null;        byte data[]=new byte[8192];        try{            pack=new DatagramPacket(data,data.length);            postman=new DatagramSocket(666);                     }        catch(Exception e){}        while(true){            if(postman==null) break;            else                try{                    postman.receive(pack);                    String message=new String (pack.getData(),0,pack.getLength());                    System.out.println("յ"+message);                }            catch(Exception e){}        }    } }
import java.net.*;import java.util.*;//import java.io.*;public class Server_Main {    public static void main(String[] args) {        // TODO Auto-generated method stub        Scanner scanner=new Scanner(System.in);        Thread readData;        ReceiveLetterForS receive=new ReceiveLetterForS();        try{            readData=new Thread(receive);            readData.start();            byte [] buffer=new byte [1];            InetAddress address=InetAddress.getByName("10.43.11.91");            DatagramPacket dataPack=            new DatagramPacket(buffer,buffer.length,address,888);            DatagramSocket postman=new DatagramSocket();            System.out.print("输入法送给客户端的消息:");            while(scanner.hasNext()){                String mess=scanner.nextLine();                buffer=mess.getBytes();                if(mess.length()==0)                    System.exit(0);                buffer=mess.getBytes();                dataPack.setData(buffer);                postman.send(dataPack);                System.out.print("继续输入法送给客户端的消息:");            }                     }        catch (Exception e){            System.out.println(e);        }     } }
import java.net.*;public class ReceiveLetterForS implements Runnable{    public void run(){        DatagramPacket pack=null;        DatagramSocket postman=null;        byte data[]=new byte[8192];        try{            pack=new DatagramPacket(data,data.length);            postman=new DatagramSocket(666);                     }        catch(Exception e){}        while(true){            if(postman==null) break;            else                try{                    postman.receive(pack);                    String message=new String (pack.getData(),0,pack.getLength());                    System.out.println("յ"+message);                }            catch(Exception e){}        }    } }

 

结果显示

总结

这次考核给我的感悟挺深的,因为,可能是因为间隔上次敲代码的时间较长,浪费在专注敲代码的时间很久,最后做完感觉还缺点什么,由于自己电脑的一些小毛病,练习显得很紧缺,但是我现在才发现,练习的重要性,哪里有什么捷径可以走,都是脚踏实地的练习。我很喜欢Java,但是就我现在的水平来说根本不够,希望以后继续努力,不在耍小聪明,自己一步步坚持。扎实真的很重要!书本原来那么的重要!加油!

课堂练习码云地址

https://gitee.com/girlchujiu/fourth_assessment/tree/master

转载于:https://www.cnblogs.com/chujiugirl/p/10123772.html

你可能感兴趣的文章
妙用python之编码转换
查看>>
hdu 4451 Dressing 衣服裤子鞋 简单容斥
查看>>
linux一些基本常识(四)
查看>>
Docker架构
查看>>
C#设计模式(3)——工厂方法模式
查看>>
过目不忘JS正则表达式
查看>>
Colidity-- StoneWall
查看>>
Leetcode 904. Fruit Into Baskets
查看>>
怎样连接REDIS服务端
查看>>
调用其他类的方法
查看>>
SQlite数据库
查看>>
一些常用的js,jquerry 样例
查看>>
Oracle PL/SQL 多重选择句
查看>>
tyvj1659中中救援队
查看>>
kubernetes学习:CKA考试题
查看>>
LINUX samba的安装使用
查看>>
CSS border 生成三角
查看>>
asp.net(c#)开发中的文件上传组件uploadify的使用方法(带进度条)
查看>>
7.STM32中GPIO理解
查看>>
base64 json
查看>>