资源简介
这是计算机网络课程设计,TCP文件传输、UDPQQ聊天配套的服务器端。
代码片段和文件信息
package cn.edu.ldu;
import cn.edu.ldu.util.Message;
import cn.edu.ldu.util.Translate;
import cn.edu.ldu.util.User;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* ReceiveMessage,服务器接收消息和处理消息的线程类
* @author 南京农业大学 19215227 计科152 程柯
*/
public class ReceiveMessage extends Thread {
private final DatagramSocket serverSocket; //服务器套接字
private DatagramPacket packet; //报文
private final List userList=new ArrayList<>(); //用户列表
protected List fileList=new ArrayList<>(); //文件列表
private final byte[] data=new byte[8096]; //8K字节数组
private String str;
private final ServerUI parentUI; //消息窗口
/**
* 构造函数
* @param socket 会话套接字
* @param parentUI 父类
*/
public ReceiveMessage(DatagramSocket socketServerUI parentUI) {
serverSocket=socket;
this.parentUI=parentUI;
}
@Override
public void run() {
while (true) { //循环处理收到的各种消息
try {
packet=new DatagramPacket(datadata.length);//构建接收报文
serverSocket.receive(packet);//接收客户机数据
//收到的数据转为消息对象
Message msg=(Message)Translate.ByteToobject(packet.getData());
String userId=msg.getUserId();//当前消息来自用户的id
System.out.println(userId);
if (msg.getType().equalsIgnoreCase(“M_LOGIN“)) { //是M_LOGIN消息
Message backMsg=new Message();
//假定只有2000、3000、8000三个帐号可以登录
if (!userId.equals(“2000“) && !userId.equals(“3000“) && !userId.equals(“8000“) && !userId.equals(“19215227“) ) {//登录不成功
backMsg.setType(“M_FAILURE“);
byte[] buf=Translate.objectToByte(backMsg);
DatagramPacket backPacket=new DatagramPacket(bufbuf.lengthpacket.getAddress()packet.getPort());//向登录用户发送的报文
serverSocket.send(backPacket); //发送
}else { //登录成功
backMsg.setType(“M_SUCCESS“);
byte[] buf=Translate.objectToByte(backMsg);
DatagramPacket backPacket=new DatagramPacket(bufbuf.lengthpacket.getAddress()packet.getPort());//向登录用户发送的报文
serverSocket.send(backPacket); //发送
User user=new User();
user.setUserId(userId); //用户名
user.setPacket(packet); //保存收到的报文
userList.add(user); //将新用户加入用户列表
Iterator it = fileList.iterator();
while(it.hasNext()){
String x = it.next();
it.remove();
}
java.io.File filename=new java.io.File(“./upload/“);
if(filename.isDirectory()){
- 上一篇:课程设计题五:汽车尾灯控制器设计.zip
- 下一篇:人机交互实验-命令行菜单界面
相关资源
- TcpListener类与TcpClient类的使用
- 以太网ENC28J60 tcp udp
- 基于Linux平台的网络聊天室设计
- 许继103TCP规约解析
- CSocket类的使用,实现TCP/UDP在局域网内
- 基于TCP协议的QT聊天程序
- linux C TCP/UDP客户端服务端的相互实时
- Modbus Slave
- Qt下tcp和udp的编程
- qttcpsocket传送结构体
- TCP、IP不错的TCP协议开发 实现上位机
- UE4客户端与服务器端TCP通信
- 可上传文件的C/S结构网络程序
- TCP_Socket.zip
- 基于RTPRTCP和RTSP协议的流媒体快速流间
- Modbus TCP 调试软件
- W5500 TCP/IP SPI发送控制
- Socket通信发送端向接收端发送图片D
- 报文测试器v2.0(tcp/udp报文数据测试)
- QTcpServer实现多客户端连接
- QT的TCP一个服务端连接多个客户端
- 基于QT的P2P共享文件系统
- IP和TCP数据分组的捕获和解析
- TCP多线程服务器
- TCP简单循环服务器
- TCP+UDP通信实验
- tcp协议简单的聊天程序Console
- 简易聊天室.zip
- Qt客户端和服务器传输图片、文本
- ONENET TCP透传脚本
评论
共有 条评论