实 习 报 告
姓 名:
学 号:
专 业:
班 级:
实 训 课 程: 网络应用程序开发
指 导 教 师:
实 训 时 间:
实 训 地 点:
2020 年 5 月
实 习 报 告
实训
内容
网络通信实训
目标及
要求
实现 Java 版 QQ 网络聊天工具开发
实训设备
仪器
Eclipse,Navicat,mysql
实习
记录
第一天:网络通信协议,TCP、IP 四层参考模型,四层模型不同的功能 IP 地址和端
口号回送地址
第二天:UDP 通信的程序编写
第三天:UDP 结合多线程双向通信
第四天:TCP 通信程序编写
第五天:TCP 通信 C/S 文件上传,JDBC
第六天:JDBC 链接 MySQL 数据库查询表信息
第七天:JDBC 对数据库表进行插入数据
第八天:项目调试
第九天:项目新功能添加
第十天:考核与总结实训
实习体会
及建议
学习了网络相关知识(TCP/IP 四层参考模型),对网络相关架构有了一定的了解,学习
了 TCP 和 UDP,对有连接和无连接网络有了一定了解,学习了 JDBC 对 Java 数据库
操作有了进一步的认知,通过 QQ 项目编写对编写程序有了更深的理解。
教师
批语
成绩 指导教师签名:
附表:
附表:
实 习 报 告 目 录
1.根据要求尝试编写网络通信代码,并调试代码
2.找出 c/s,b/s 模式的优缺点
3,TCP 协议与 UDP 协议的区别
4,InetAddress 类主要用来实现什么样的功能
5,TCP/IP 协议的网络模型包括哪些层,分别实现什么样的功能
6,编写 UDP 通信的程序中收发端分别需要做一些什么工作。
7,DatagramPack,DatagramSock 分别是什么意思,区别在哪里
8,编写聊天程序源代码并运行出结果
9,编写 TCP 服务 1 和 TCP 服务 2 程序。
10,编写电脑远程控制程序
11,编写接口程序。
12,开始 java 版 QQ 网络聊天工具开发
13,数据库编程 jdbc 的一系列的操作
14,集合类里面 List,Map 接口知识
一.作业
1. 根据要求尝试编写网络通信代码,并调试代码
【调试类:程序启动类 ChatRoom.java】
package example;
import java.util.Scanner;
/*
* 聊天室
*/
public class ChatRoom {
public static void main(String[] args) {
System.out.println("欢迎你进入聊天室");
Scanner sc=new Scanner(System.in);
System.out.println("请输入本程序发送端口号:");
int sendPort=sc.nextInt();
System.out.println("请输入本程序接收端口号:");
int receivePort=sc.nextInt();
System.out.println("聊天系统启动!");
new Thread(new SendTask(sendPort),"发送端任务").start();//发送操作
new Thread(new ReceiveTask(receivePort),"接收端任务").start();//接收操作
}
}
【接受端:ReceiveTask.java】
package example;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/*
* 接收数据的任务类
*/
public class ReceiveTask implements Runnable {
private int receivePort;
public ReceiveTask(int receivePort) {
this.receivePort = receivePort;
}
@Override
public void run() {
try {
//1.DatagramSocket 对象
DatagramSocket ds=new DatagramSocket(receivePort);
//2a.创建 DatagramPacket 对象
byte[]buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf, buf.length);
//3.接收数据
while(true) {
ds.receive(dp);
String str=new String(dp.getData(), 0, dp.getLength());
System.out.println("【接受端】收到"+dp.getAddress().getHostAddress()+"--发送的数据,数据内容:--"+str);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
【发送端:SendTask.java】
package example;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class SendTask implements Runnable{
private int sendPort;//发数据的端口号
//构造方法
public SendTask(int sendPort) {
this.sendPort=sendPort;
}
@Override
public void run() {
try {
// 1.创建 DatagramSocket 对象
DatagramSocket ds=new DatagramSocket();
//2.输入要发送的数据
Scanner sc=new Scanner(System.in);
System.out.println("【发送端】:请输入你要发送的内容!");
while(true) {
String data=sc.nextLine();//获取键盘输入的数据
//3.封装数据到 DatagramPacket 对象中
byte[]buf=data.getBytes();
DatagramPacket dp=new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.255"), sendPort);
//4.发送数据
ds.send(dp);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
【程序调试】