C#-JudgeSystem判题系统-开放实验总结

花了一周的时间去做这个实验中间断断续续完成不同的部分,按照实验过程来一步一步完成感觉实验流程还是相当合理的

上图就是最后的成品,其中包括

JudgeCilent客户端

完成部分:

1、可以提供五种测试状态的显示,包括网络异常,编译失败,输入错误(超时),结果错误,接受,五个状态

2、可以对无输入程序进行测试

3、可修改ip地址与端口

可提高部分:

1、由于该程序只是辅助测试服务器的使用的,所以并没有做一下界面的优化比如线程运行优化来避免等待服务器返回时界面不响应的现象

JudgeServer服务器

完成部分:

1、错误处理,并测试在判题过程的几种意外下能正常运行,以及客户端无连接后会在30秒超时时主动断开连接避免系统空连接过多造成的系统开销

2、多线程处理,在并发速度为10ms一次连接下,并且带有不同的错误情况下,系统依然能正确运行,高并发下测试判题并没有错误

可提高部分:

1、服务器与客户端的交互仍有不完善的地方,一是不方便拓展,一旦服务器修改,客户端必须进行修改,因为数据是按照一定规则分次发送的,而不是结构化一次性发送

2、暂时没有提供自定义的监听端口与gcc编译程序地址与test编译测试工作目录,这里通过相对地址也就是如图的两个文件夹存放,监听地址固定为8080而没有设置成运行时确定

CompileTest编译类库

完成部分:

1、编译与测试输入输出结果,无输入则通过\r\n来表示

2、超时机制,可定义超时时间

3、异常处理,在任何异常下保证系统不会出现不受控制的子进程

可提高部分:

1、通过windows api完善编译过程的信息反馈,包括内存,编译运行时长等

由于c#语言跟系统高度结合与封装大量的功能,所以实现起来并不是很复杂,像是socket的超时只需要一两个语句即可控制,也是非常简单方便,当然要实现更多的底层功能就需要掌握更多c#语言

这短暂时间的练习仅仅能掌握一些简单的c#语言,要想更深一步完善系统可能需要更仔细的掌握c#的一些深层次的用法

通过这次实验,我掌握了c#的socket编程,简单的多线程编程,以及c#调用外部exe程序的编程,另外对http以及cgi也有一定的理解与体会,掌握了较多未接触的新知识,但是还是比较简单的理解,如果真的要摸透c#在网络编程方面的更多细节部分依然需要很长时间的学习与掌握,在实验过后也有待自我学习与提升

时间: 2024-10-11 05:19:27

C#-JudgeSystem判题系统-开放实验总结的相关文章

C#-JudgeSystem判题系统-安装和熟悉C#开发环境

由于该项目属于已完成项目,过程实验报告均以提交,这里一次性提交到博客中分享一下 新建一个wpf项目,命名为HTTPServer 点击MainWindow.xaml可以进入xaml的设计器环境 在设计器环境中我们可以通过下方的xaml代码编辑器进行界面修改 也可以通过右侧工具箱拖拉控件调整位置 根据实验要求我们先拖放两个文本框 然后我们还需要添加两个多行文本框 拖拉完成后我们需要进行对文本框的换行属性进行编辑 我们可以直接修改xaml或者在右侧控件属性中修改 在属性框上方的搜索框中输入相关的可修改

牛客网在线判题系统JavaScript(V8)使用

JavaScript作为一种弱类型的编程语言,语法和C/C++.JAVA等存在差别,但是对于大部算法题,不只是C/C++.JAVA,也依然可以使用JavaScript来实现.所以在牛客网中,如果你喜欢JavaScript这门编程语言,同时对数据结构与算法感兴趣,当然可以使用这门语言去刷编程题. 大家有没有跟我碰到过和我类似的情况,在牛客网刷编程题的时候,编译器提供的是Javascript(v8 6.0.0),在线编程部分前端编程还好,只用在题目给出的函数中补充就行.但苦恼的是,我们不知道如何像C

ZZNU 1163: 在线判题(指针专题)

题目描述 Ignatius is building an Online Judge, now he has worked out all the problems except the Judge System. The system has to read data from correct output file and user's result file, then the system compare the two files. If the two files are absolu

OnlineJudge判题平台 ——后台流程

判题分两部分 1.其中judged为服务进程,d即daemon.负责轮询数据库,提取判题队列.当发现新任务时产生judge_client进程. 2.judge_client进程为实际判题程序,负责准备运行环境.数据,运行并监控目标程序的系统调用,采集运行指标,判断运行结果. Judged流程 初始化: 1.创建子进程pid_judged,并设置为会话的领头进程(umask(0),close(0~2)) 2.改变当前工作目录为"/home/judge" 3.将pid_judged写入文件

1-ser2008系统封装实验报告

系统封装实验 1.       封装系统的原因 直接克隆系统会导致克隆后的系统和原系统的SID号一致,在许多实验中会因为SID号相同而影响实验效果(如活动目录) 2.       实验 首先看一下ser2008的封装,很简单,找到系统盘(一般是c盘),打开路径c:\windows\system32\sysprep 来自为知笔记(Wiz) 附件列表

Win7系统开放C盘下文件夹Everyone权限

Win7系统开放C盘下文件夹Everyone权限 安装软件时遇到这样的情况:我就是管理员权限啊,怎么会安装有问题呢? 后来知道,用户名即使分配了你是管理员权限,有些文件还是有限制的(特别是C盘) 昨天遇到一个问题,有个文件夹里的隐藏文件就是无法显示,做了如下操作: 选中文件夹右键“属性”—“安全”—添加“Everyone”,把所有权限勾上.

2-ser2003系统封装实验报告

Ser2003需要挂载系统镜像 至此,ser2003的母盘制作完成!!! 来自为知笔记(Wiz) 附件列表

基于Android 4.4 开发的多窗体系统 开放源代码

Hi, 这是我基于Android 4.4开发的多窗体系统,还有非常多不足,还请多多不吝赐教啊,代码已经所有开源. 视频地址 源代码地址 Done: 1. APP以窗体化显示 在 PhoneWindowManager::layoutWindowLw() 中通过packageName过滤,使指定的APP以非全屏尺寸显示,由于一个APP一般是以一个task为单位,显示多个activity,因此採用packageName过滤的方法. 2. 多个APP同一时候处于 onResume 状态 改动AMS中通知

一个小判卷系统

写的比较弱,只能处理50道以内的选项为A-D的单选题,正确答案自己输进去,必须要大写,不能有空格和逗号,提交会出分,错误的题号和答案会console.log()出来. <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> .rowline{ widt