资源简介
这是计算机网络课程设计,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
- 下一篇:人机交互实验-命令行菜单界面
相关资源
- Modbus协议官方文档中、英文全
- Omron ETN21模块进行modbustcp通讯
- 组态王中S7-300TCP驱动
- 基于Apache Mina实现的TCP长连接和短连接
- CVI下的TCP服务器和客户端
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- TCP 发包工具(windows)
- VxWorks TCPIP协议栈
- socket小工具(可方便建立TCP UDP的soc
- vc 编写的基于TCP协议的客户/服务器
- 基于CSocket的多人聊天室
- 采用WINSOCK2 编写的TCP/UDP通信程序
- Modbus TCP Client
- 易语言 TCP使用HTTP、SOCKES5代理IP。
- 西门子S7-1200 MODBUS-TCP通讯编程
- 200SMART Modbus-TCP通信程序演示-轮询(多
- TCP_UDP对结构体加密数据传输
- 基于PIC的TCP/IP网络协议和zigbee无线传
- 欧姆龙PLC tcp通信工具
- 欧姆龙以太网通讯TCP/UDP及欧姆龙PLC程
- 流媒体相关协议标准RTP/RTSP/RTCP PDF文档
- 航海模拟器中DCPA TCPA的算法
- TCPMP 支持ce6.0的播放器
- TCP/IP协议详解3卷全_高清_带书签
- stm32103c8t6ESP8266串口转WIFI模块TCP服务器
- DOS下的TCP-IP协议库文件原代码.rar
- 《TCP/IP详解卷2:实现》pdf
- 《TCP/IP:协议分析与应用编程》课后
- Modbus—TCP协议
- 计算机网络socket编程实验
评论
共有 条评论