It took me a week to do the experiment. Intermittent completion of different parts, according to the experimental process to complete the feeling of the experimental process is quite reasonable
Is the final finished product, which includes
Judgecilent Client
Complete section:
1, can provide five kinds of test status display, including network exception, compile failure, input error (timeout), result error, accept, five status
2. No input program can be tested
3, can modify the IP address and port
To improve the section:
1, because the program is only auxiliary test server use, so did not do the interface optimization such as thread optimization to avoid waiting for the server to return when the interface does not respond to the phenomenon
Judgeserver Server
Complete section:
1, error handling, and test in the process of several accidents under the normal operation, and the client is not connected after 30 seconds in the time of the active disconnection to avoid excessive system empty connection caused by the system overhead
2, multi-threaded processing, at a concurrent speed of 10ms a connection, and with different error conditions, the system can still operate correctly, high concurrency under the test of the problem and no errors
To improve the section:
1, the server and client interaction still have imperfect place, one is inconvenient to expand, once the server changes, the client must be modified, because the data is sent in accordance with a certain rules, rather than a structured one-time send
2, temporarily does not provide a custom listening port and the GCC compiler address and test compiled testing working directory, where the relative address is the two folder, the listener address fixed to 8080 and not set to run time determined
Compiletest Compiling class libraries
Complete section:
1, compile and test input and output results, no input by \ r \ n to indicate
2, timeout mechanism, can define timeout time
3, exception handling, under any exception to ensure that the system does not appear uncontrolled sub-process
To improve the section:
1. Improve the information feedback of compiling process through Windows API, including memory, compile run time, etc.
Because the C # language is highly integrated with the system and encapsulates a large number of functions, so the implementation is not very complex, such as the time-out of the socket requires only one or two statements can be controlled, it is very simple and convenient, of course, to achieve more of the underlying functions need to master more C # language
This short period of practice can only grasp some simple C # language, in order to further improve the system may require a more careful grasp of C # some deep-seated usage
Through this experiment, I mastered the C # socket programming, simple multithreaded programming, and C # call external EXE program programming, in addition to HTTP and CGI also have a certain understanding and experience, mastered more untouched new knowledge, but still relatively simple understanding, if you really want to understand C # More details on network programming still require a long time to learn and master, after the experiment also need to self-learning and promotion
C#-judgesystem System-Open Experiment Summary