1. Homepage
  2. Programming
  3. Computer Networks Lab Assignments: Chat Client, TCP Trace Analysis, Chat Server, DIY DNS Server, and Online-Multiplayer Game

Computer Networks Lab Assignments: Chat Client, TCP Trace Analysis, Chat Server, DIY DNS Server, and Online-Multiplayer Game

Engage in a Conversation
Computer NetworksTCP TraceChat ClientSocket ProgrammingPython Chat Server DIY DNS Server and Online-Multiplayer Game

1L a b O v e r v i e w CourseNana.COM

Part of becoming a Computer Scientist is equipping yourself with the practical skills you willneed to solve real-world problems, and computer programming is one of these skills. In this lab,you learn how to build networked applications and write programs that use sockets. This guidedescribes all available lab assignments. Completing a lab assignment earns you points for thecourse. Every assignment lists the number of points it is worth in its title.There are two mandatory lab assignments. In the first one, you will implement a simple chatapplication. You can find the description for this assignment in Section 3.1, and a full descriptionof the chat protocol in Appendix A. The second mandatory assignment involves visualizing andreading network traces with Wireshark. Here, you will analyze the trac between your chatclient (from the previous mandatory assignment) and our server.After you complete these assignments, you should be able to create your own simple networkedapplications using sockets and TCP/IP.￿You must pass the mandatory assignments to pass the course.2 SetupThis section helps you set up the tools you will need to complete the lab assignments. If you runinto problems installing the required software, you can use the virtual machine (VM) providedon Canvas. The VM comes with the required software preinstalled.The assignments are to be completed using the Python 3 programming language. Pleasedownload and install Python 3 via its website1or your package manager. Once you have Pythoninstalled, you can test that it works by typingpythonon the command line (Unix, MacOS), oropening the IDLE Python interpreter (Windows).Once you have Python 3 installed, you may want to install a text editor or integrated devel-opment environment (IDE). We recommend Visual Studio Code,2but many other good editorsexist for Python.Python is an interpreted language, which means you do not need to compile your programto machine instructions before running it. You can run your code directly from your IDE, or bypassing it as an argument to Python by running “python3 path-to-python-script.py.”3 AssignmentsThis section describes the Computer Networks lab assignments. The first two assignments aremandatory, andmustbe completed to pass the course. The other assignments are optional.Completing assignments earns you points. Every assignment lists its reward in the title. Someassignments have a variable reward. Read their description for more details.Each assignment must be approved by a TA during a lab session, and handed in on Canvas.The deadline for the assignments can be found on Canvas and in the course syllabus. The TAsare present during the lab sessions to provide support for the mandatory assignment. You areexpected to complete the other assignment without external help, but TAs are there to providesupport in extreme cases.1https://www.python.org/2https://code.visualstudio.com/4 Your code must directly use Python’ssocketlibrary. The use of other libraries fornetwork-related functionality (e.g.,socketserver,zlib) is not permitted. Using thesocket.sendallmethod is not allowed. Usesocket.sendinstead. 5 3.1 Mandatory Assignment: Chat Client (0-150 points)In this assignment, you implement a text-based chat client. For this, you use Python, sockets, andthe Transmission Control Protocol (TCP). Once you are comfortable using the socket interface,using sockets in other programming languages should be straightforward.3After completing thisassignment, you will be able to exchange messages with your fellow students using your ownclient.The chat client and chat server are built on top of TCP and use their ownapplication-layerprotocol. This means the client and server can request the other to perform actions by sendingpredefined types of messages. For example, your client can ask the server to forward a messageto another user’s client by sending the string “SEND username insert your message here\n”to the server, where “username” is the user to whom you want to send your message. If yourmessage is correct, the server will send two messages: one to the destination user, forwardingyour message, and one back to you that says “SEND-OK\n”, to notify you that your message wasforwarded successfully.4Keep in mind that these messages can be of any length. Therefore, youneed to make sure that your client can handle arbitrary message lengths. The full details of theprotocol are listed in Appendix A.Similar to Web browsers and other modern applications, your chat client does not expose theprotocol it uses to the user. Instead, it provides a user-friendly text-based interface that makes iteasy for users to chat with others without knowing the protocol specifications. The specificationsof this interface, and the requirements of this assignment, are listed below.RequirementsYour application must:1.Implement the chat protocol described in Appendix A.2.Connect to the chat server and let the user log in using a unique name.3.Ask for another name if the chosen name is already taken.4.Let the user shutdown the client by typing!quit.5.Let the user list all currently logged-in users by typing!who.6.Let the user send messages to other users by typing@username message.7.Receive messages from other users and display them to the user.The chat server is hosted by the teaching team. Its address can be found on Canvas. Fortesting purposes, a special user calledechobotis always online. Echobot is a chatbot that repliesto all your messages by sending back the same message it receives.EvaluationA teaching assistant will ask you questions about your code and check its correctness. The rewardfor this exercise is based on the Canvas submission date and time of your approved assignment.150 points Submit the assignment during your lab in week 1 or 2.100 points Submit the assignment during your lab in week 3.50 points Submit the assignment during your lab in week 4.3Famous last words.4Make sure that you receive this OK before asking the user for the next message to send.6 ResourcesYou can find the full protocol used by the server and clients in Appendix A. References forprogramming with sockets and threads can be found in Appendices B and C respectively. 7 3.2 Mandatory Assignment: TCP Trace Analysis (0-100 points)In this assignment, you will use your chat client to track and trace your connection with theserver and observe the intricacies of the TCP connection. Because TCP is designed to be reliable,it has several mechanisms to keep track of in-order packet delivery and guaranteed delivery. Wewant you to explore these features hands-on by taking a look at how the chat client communicateswith the server using this transport layer protocol. To this end, you will run your chat clientand analyze the TCP trac usingWireshark, a packet analysis tool. Capture the trac betweenyour client and the server and answer the questions.RequirementsSuccessfully complete the steps below. First, perform these steps by yourself. Once you arecomfortable with answering all questions, ask a TA to sign o↵ your assignment and repeat theprocess.1.Use Wireshark to capture trac between your chat client and the server when sendingseveral chat messages.2.Answer and discuss the following questions (with a TA):(a)Which segments perform the TCP connection handshake between client and server?How can you tell?(b)What are the initial (absolute) sequence numbers of the client and server? Is thisexpected behavior? Why?(c)Which bytes in the TCP segments represent the chat message data? How can youfind out?(d)Which flags are used in segments that carry chat messages?(e)Where in the trace are the segments that carry chat messages acknowledged by theTCP protocol? Where are they acknowledged by the application?(f)How do the sequence and acknowledgment numbers change during the trace? Is thisexpected?(g)Which segments close the TCP connection? How can you tell?3.When signing o↵ your assignment with a TA:(a)Save the questions and your answers in a text or PDF file.(b)Save your Wireshark trace.(c)Upload your written answers to your questions to CodeGrade.EvaluationA teaching assistant (TA) will approve your assignment if you correctly complete the requirementsabove. Upload the questions and your answers, in a text or PDF file, to Canvas. Please clearlystate your answers to each question. The TA may ask additional questions to evaluate yourunderstanding. Make sure you are ready to show your findings by having Wireshark open andyour chat client ready to run. The reward for this exercise is based on the Canvas submissiondate and time of your approved assignment.100 points Submit the assignment before or during your lab in week 6.50 points Submit the assignment during your lab in week 7.8 ResourcesWiresharkDownload and install Wireshark fromhttp://www.wireshark.org/download.html.Get familiar with its basic workings. Try capturing packets from an interface by navigat-ing to the “Capture” menu and choosing “Interfaces”. Click “Start” to begin capturingpackets. Make sure there is some network activity so that there are packets for Wiresharkto capture. Click “Stop” in the “Capture” menu to stop capturing packets. You shouldsee several lines of captured packets. Click some of the packets and examine them. Use“Filter” to see focused output. Once you are familiar with the basic workings of Wireshark,move on to the assignment. 9 3.3 Chat Server (250 points)In the chat client assignment, you used a server hosted by the teaching team. This server connectsmultiple clients and forwards messages between them. In this assignment, you implement yourown chat server using the same protocol.Unlike the client, the server is likely to have multiple open connections at the same time—onefor each client that is connected to it. Because it is impossible to predict when a client will senda request or message, your server needs to keep checking all connections for incoming data. Bothpolling and multi-threading are allowed as solutions to this problem.Requirements1.Support the full protocol specified in Appendix A.2.Support at least 64 simultaneous clients.EvaluationThe TAs will ask you questions about your code and check its correctness, possibly by chattingwith each other using your server.ResourcesSee the resources listed in Section 3.1. 10 3.4 Chat Client for Unreliable Networks (500 points)In the mandatory assignment, you implemented a simple chat client. Because the interfacesand protocols of computer networking are already well-established, there are many challengesthat you do not need to take into account. For example, once a connection is established, TCPprovides a stream of bytes in the order they were sent and without error. This assignmentasks you to give up such conveniences and instead provide solutions to some of these challengesyourself.Assignment DescriptionThe Internet Protocol (IP) is an unreliable datagram protocol. Fortunately for many applicationprogrammers, the Transport Control Protocol (TCP) runs on the hosts and hides the unreliabilityof the network and underlying protocols.Implement a chat client that uses UDP and the protocol shown in Appendix A. This chatclient must be able to communicate with similar clients via the Unreliable Chat Server, whoseaddress can be found on Canvas. You can configure the Unreliable Chat Server to simulatean unreliable network by letting it drop a fraction of the received messages, insert errors intomessages, or even change their order. Use this to test the correctness of your chat client. Thecommands used to configure the server are listed in Appendix D.Your chat client should meet all the requirements listed in Section 3.1, as well as the require-ments below.Requirements1.Use UDP instead of TCP.2.Guarantee delivery of messages using acknowledgments.3.Protect against errors in the message. The client must detect at least single, double, andtriple-bit errors.4.Messages are delivered in the order they are sent.5.The interface shown to the user does not di↵er from the one in the mandatory assignment.AssessmentShow that your chat client hides the unreliability of the network from the user. Configure theUnreliable Chat Server and send messages between two instances of your client. 11 3.5 Packet Analysis (500) points￿The assignments in this section are mutually exclusive. You can get points for oneor the other, but not for both.3.5.1 HTTP Trace Analysis￿If you complete this exercise, you cannot complete the exercise in Section 3.5.2.In this assignment, you will capture and analyze a network trace between your browser anda Web server. Web servers and proxies are one of the most widely-deployed server applications,powering the websites that we visit every day. The protocol behind the Web, the HyperTextTransfer Protocol (HTTP) started out as a simple plain-text protocol built on top of TCP. Themost widely-used plain-text version of the protocol is HTTP/1.1.5As the Web evolved, the number of protocol extensions kept increasing, and the size ofwebsites, or “Web applications”, increased together with the number of users. Improving HTTPperformance and combining extensions into one standard, HTTP/26came out many years later.Three important improvements introduced in HTTP/2 are:1.Multiplexing. HTTP/2 is a multiplexed protocol: multiple requests can be made at thesame time, and multiple responses can be received in one message.2.Header compression. During a web browsing session, the headers your browser will send tothe server will remain more or less the same, and the headers the server will send to yourbrowser will also not change by much. To spare bandwidth, headers are compressed andare sent less often, as you will see in the traces.3.The most apparent one: HTTP/2 is a binary protocol. This makes it much more dicultto manually read and write HTTP messages.Although a newer version of HTTP, called HTTP/3 exists,7we focus in this assignment onHTTP/2. The most important change from HTTP/2 is that HTTP/3 uses UDP, not TCP,for its transport layer protocol, and moves the responsibility for managing connections andreliable delivery from the transport layer to the application layer. For further reading on howHTTP/3 implements these changes, see QUIC.8To obtain an overview of the HTTP protocolversions and their implementations, we recommend reading the articles available athttps://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP.Assignment DescriptionYou are going to interact with a Web server that is both HTTP/1.1- and HTTP/2-enabled,and see how HTTP requests and responses look in practice. First, you are going to take a lookat HTTP/1.1, and then at HTTP/2.5You can find the newest HTTP/1.1 standard athttps://datatracker.ietf.org/doc/html/rfc91126The newest HTTP/2 standard:https://datatracker.ietf.org/doc/html/rfc91137The HTTP/3 standard:https://datatracker.ietf.org/doc/html/rfc9114.O b s e r v e h o w t h e R F C n u m b e r sare consecutive!8QUIC:https://www.chromium.org/quic/12 Web browsers only support HTTP/2 when served using Transport Level Security (TLS) (youwill see the URL starts withhttps://). Although Wireshark intercepts all packets between yoursystem and the Web server, TLS prevents us from reading the contents of the packets becauseit is designed to be resistant against Man-In-The-Middle Attacks (MITMs). This means we willneed to do a bit of setup9to enable Wireshark to decrypt the data, i.e., the HTTP/2 messages.This is an example of protocol encapsulation: HTTP/2 messages are encapsulated in TLS!Setup1.Download the support script from Canvas:mosaicsupport.cmdfor Windows, andmosaicsupport.shfor Linux and macOS.By default, the scripts try to launch Google Chrome. If you prefer a di↵erent browser,please modify the script accordingly.2.(For Mac and Linux only) Make the script executable by running at the command linechmod +x mosaicsupport.sh.103.Close all instances of Chrome (or what browser you modified the script to run). End thetask from Task Manager, runpkill chromeon Linux and Mac.4.Run the script. A browser window should appear.5.Open Wireshark, and select your active network interface (you can judge which one it is bythe activity graph next to its name). Then go to Edit (in the menu bar)!Preferences!Protocols!TLS. Press the “Browse” button next to “(Pre)-Master-Secret log filename”,and select the file namedkeylogfile.txtin your home directory.￿Making sense of packet traces in Wireshark without using filters can be very di-cult. You can writehttpin the filter box and only HTTP/1.1 traces will be shown.For HTTP/2, you can usehttp2. There are many other filters, for example forfiltering based on the host and/or port. Try them out and discover!RequirementsConsiderserverurlto mean the URL of the assignment server, which can be found onCanvas.Set up according to the instructions above and answer the questions below. When you areconfident you have correctly answered all questions, discuss your trace and answers with a TA toget your assignment signed o↵. You do not need to redo the trace when discussing your answerswith the TA.1.Navigate tohttp://serverurl:8080. Press on the links, and familiarize yourself withhow the website looks. Look on the Wireshark trace, identify the packets that go from theclient to the server, and the ones that go from the server to the client.9That is, Putting-yourself-In-The-Middle.10Read “CHange MODe to set the eXecutable bit.”13 You will get a certificate error from your web browser, warning you thatthe connection is not safe. For a real website, this would be a problem,but this is completely fine for our assignment. You can ignore the error bypressing “Advanced” and then clicking the link at the bottom (“Proceed toservername (unsafe)”2.Click on “Click for HTTP request information”. You will see the HTTP headers that theserver received from your browser. Now look in Wireshark. Are the HTTP headers thatthe browser sends to the server the same as the ones on the screen? If there are di↵erences,what are they?3.What do the headers mean?4.Reload the page, first by pressing F5, then by pressing Ctrl+F5. Are the headers di↵erentif you press CTRL when refreshing? Why? What do the changed headers mean?5.Navigate tohttp://serverurl:8080/gophertiles. You will see a picture11made ofsmaller tiles loading. Can you find the request and response for each of the tiles in Wire-shark? How does the server know which tile to serve? You may observe that your browseruses more than one TCP connection to load the pictures. Why is this happening? How canyou find in Wireshark how many TCP connections are used by your browser, and whichconnection is used for every tile? How many connections are used?6.(HTTP/2, dicult) Navigate tohttps://serverurl:4430. What does this request looklike in Wireshark? Are the headers and the page’s content separated? How does thedecrypted response di↵er compared to the HTTP/1.1 version?7.(HTTP/2, dicult) Navigate tohttps://serverurl:4430/gophertiles. Once again,an image made of tiles is shown, but it loads much faster. As you select higher latenciesfrom the top-left corner, no matter what you select, the HTTP/2-enabled page loads muchfaster. Why is this the case? What do the client’s requests for the tiles look like, and whatis the di↵erence compared to the HTTP/1.1 version? What do the server’s responses looklike? How many TCP connections does the browser use to load the tiles in the HTTP/2version, and why is it the case?8.(HTTP/2 and TLS, dicult) As HTTP/1.1 and HTTP/2 look completely di↵erent onthe wire, there needs to be a way for the server and client to communicate which versionto use, in a backwards-compatible way. This is done through Application-Layer ProtocolNegotiation, encoded as a TLS extension. Identify the negotiation in the Wireshark trace.To force HTTP/1, you can use curl:curl --insecure -v --http1.1 https://servername:4430/12Similarly, for HTTP/2:curl --insecure -v --http2 https://servername:4430EvaluationA teaching assistant (TA) will approve your assignment if you correctly complete the requirementsabove. Upload the questions and your answers, in a text or PDF file, to Canvas. Please clearly11Pictured is a UNIX system.12We need the--insecureflag to ignore certificate errors.14 state your answers to each question. The TA may ask additional questions to evaluate yourunderstanding. Make sure you are ready to show your findings by having Wireshark and yournetwork trace open.3.5.2 Botnet Reverse-Engineering If you complete this exercise, you cannot complete the exercise in Section 3.5.1.A botnet is a network of malware-infected computers. The malware makes the computer re-spond to remote commands send by an attacker. This attacker could, for example, instruct thesecomputers to all at once request a resource-intensive service from a single provider, executing aDistributed Denial of Service Attack (DDoS).Assignment DescriptionFor clarity, we introduce two new terms. Firstly, we use “botnet executable” for the maliciouscode that is running on an infected computer. Secondly, we use “botnet control server” for themachine that sends malicious commands to these computers.In this assignment, we give you a botnet executable. It is your task to reverse engineer theprotocol this executable uses to communicate with the botnet control server. Fortunately, thisparticular botnet was made by us, and is not malicious, so you can safely run it on your machine.Your task is to run the botnet executable, capture its trac while it is connected to the server,and then analyze the captured trac to figure out how the botnet protocol works. This is acommon task for real-world malware analysts.Requirements1.Capture network trac from the botnet executable.2.Reverse engineer the protocol used.3.Answer the following questions about the botnet in your report:(a)Which IP address and port number are used by the command server?(b)What transport layer protocol is used by the botnet?(c)What is the version number of the given bot client?(d)The botnet supports 4 di↵erent commands (excluding thehiddencommand, whichyou don’t need to describe here). What are they?(e)(dicult puzzle) The protocol includes a single encrypted message type, which is sentto the server after a certain kind of command is received. You may have to run thebot multiple times to see the encrypted message. Try to find out how this messageis encrypted, and then decrypt it. Which encryption algorithm is used, and what isused as the key? Please report to us a single decrypted message (copied verbatim,including the checksum field), and the key that you used to decrypt it. Briefly describethe structure of the message, and how you went about cracking the encryption.(f)(dicult puzzle,optional) The protocol also includes a special kind of command whichcontains a hidden message. This message is sent to the bot by the server after aCOMMANDrequest. You may have to run the bot multiple times to see the message.15 The message includes a mysterious payload in which the server has hidden secret data(hint: the secret data is in plaintext). What does this payload represent, and how isthe data hidden within it? Please describe how you figured this out. Also send us thehidden data (plaintext) which you recovered from the payload.EvaluationThe TA will first ask you to run the original executable, capture its network trac, and explainthe messages that are exchanged. Afterwards, the TA will discuss the answers you provided tothe questions listed in the requirements.ResourcesBotnet executableDownload the executable from Canvas. We provide both a Windows (32-bit/64-bit) and an Ubuntu Linux (32-bit/64-bit) binary. Choose the one that matches yourplatform. If there is no binary matching your platform, you can run the 64-bit UbuntuLinux executable using the Virtual Machine provided on Canvas.WiresharkDownload and install Wireshark fromhttp://www.wireshark.org/download.html.Get familiar with its basic workings. Try capturing packets from an interface by navigat-ing to the “Capture” menu and choosing “Interfaces”. Click “Start” to begin capturingpackets. Make sure there is some network activity so that there are packets for Wiresharkto capture. Click “Stop” in the “Capture” menu to stop capturing packets. You shouldsee several lines of captured packets. Click some of the packets and examine them. Onceyou are familiar with the basic workings of Wireshark, move on to the assignment. 16 3.6 DIY DNS Server (750 points)How many web pages do you visit in a day? Would you be able to remember all their IP addresses?Probably not. It turns out that humans are bad at remembering arbitrary sequences of numbers,but reasonably good at remembering names. By assigning names to IP addresses, web browsingbecomes doable for humans. Instead of having to remember the sequence “,” youonly need to remember “www.google.com.” Your browser automatically translates this into thecorrect IP address.13However, this automated translation increases the complexity of the system, which now needsto translate a name into an IP address before it can establish a connection. It would be infeasiblefor every computer to keep a local, up-to-date copy, of all name-to-address mappings. Instead,computers depend on a globally distributed system called the Domain Name System (DNS) tolook up these mappings dynamically.This system contains a large hierarchy of servers calledDNS servers. A DNS server is acomputer that keeps track of IP addresses and their associated domain names. DNS servers canask each other for the IP address matching a certain domain name. It then resolves, or translates,this name into an IP address by looking it up in its local database, or by contacting other DNSservers higher up in the hierarchy.Assignment DescriptionDNS servers communicate with each other using their own protocol. It is your job to implementyour own DNS server that adheres to this protocol and performs recursive queries. Start byreading the ocial specification, RFC 1035.14The RFC mentions in detail the request formats,the queries that you will receive, and more valuable information.RequirementsTypically, a client application forwards a domain name to the operating system, which in turnforwards it to a DNS server that performs recursive queries. Performing a recursive query meansthat the DNS server will query other DNS servers until it finds the address that belongs to thegiven domain name. This address is then returned to the application via the operating system.Your task is to implement your own DNS server with the following requirements:1.Perform recursive DNS queries.2.Handle requests from multiple operating systems.3.Implement the RTT (Round Trip Time) algorithm to choose a name server.4.Implement the caching policy specified in the RFC section “7.4. Using the cache”5.Handles mail exchange server requests.13Another, more compelling, reason not to use IP addresses to identify Web pages is that it makes the assumptionaW e bp a g ei st i e dt oas i n g l em a c h i n e ,o rn e t w o r kd e v i c e . M o r eg e n e r a l l y ,i tc r e a t e sad e p e n d e n c yb e t w e e na nentity on one layer, and the implementation of a lower layer. Naming entities on their own layer solves thisproblem, but the Domain Name System (DNS) does not do this. Instead, it translates a human-readable domainname into an Internet address. I.e., it simply provides global, mutable, and easy-to-remember aliases for networkdevices. The Web browser has to guess the right transport-layer address (port number) to find the right entity.This system works because it relies on hard-coded port numbers. If you want to run your Web server on a di↵erentport number, users have to enter it in their browser manually. This shows that, although we have DNS, thereis still a dependency between implementations across layers. This is not so much a shortcoming of DNS, as ashortcoming of the design of the upper layers of the Internet.14Seehttps://www.ietf.org/rfc/rfc1035.txt.17 EvaluationYour implementation is evaluated by the TAs. To test your server implementation, you canconfigure your Web browser or operating system to use it as its DNS server. Make sure thatyour server can handle requests from di↵erent operating systems. Your implementation mustresolve requests by communicating with the root server and the servers it lists in its replies. Youcannot pass the assignment if you simply forward requests to another DNS server that performsrecursive queries.ResourcesBelow is a list of free, popular, and public DNS servers. You can analyze their responses to learnmore about how to implement your own server.Google( can find the addresses of the DNS root servers athttps://www.iana.org/domains/root/servers. 18 3.7 Online-Multiplayer Game (1000 points)Online games can be highly demanding on computer networks. They require both high bandwidthand low-latency communication, often between large groups of players.Assignment DescriptionIn this assignment, you design, implement, and demo your own online-multiplayer game. Toparticipate in this assignment, you first need to write a plan for your game and get it approved.Your plan must at least contain the following three parts:1.A description of the game itself, and how it is played.2.A design of your game, including its networking requirements. To get your plan approved,you must show that these requirements pose sucient networking challenges. Examples ofsuciently challenging designs are:(a)Design a (real-time strategy) game that uses lock-step simulation15and UDP.(b)Design a high-paced shooter game that uses dead-reckoning and UDP.(c)Design a game where one of the clients functions as the server, but can recover if thisclient/server fails.We also appreciate advanced and new ideas. Do not be afraid to be creative!3.A description of your approach, and how this will meet your requirements.Discuss your plan with the teacher before getting started. Plans are only approved if theirrequirements are suciently complex. If you plan to complete this assignment, submit your gameplan several weeks before the assignment deadline and assume that your plan will require severalrounds of feedback before it is approved. If your plan is not approved, you cannot complete thisassignment.Requirements1.Submit your plan on Canvas.2.Your plan must be approved by the teacher.3.Build your game such that it meets the agreed-upon requirements.EvaluationDemo your game to, or play your game with(!), the TA. Show the TA the source code and explainhow your game works, how your game meets its requirements, and how you solved challengesencountered along the way. 15Seehttps://www.gamedeveloper.com/programming/1500-archers-on-a-28-8-network-programming-in-age-of-empires-and-beyond.19 CourseNana.COM

Get in Touch with Our Experts

WeChat WeChat
Whatsapp WhatsApp
Computer Networks代写,TCP Trace代写,Chat Client代写,Socket Programming代写,Python代写, Chat Server代写, DIY DNS Server代写, and Online-Multiplayer Game代写,Computer Networks代编,TCP Trace代编,Chat Client代编,Socket Programming代编,Python代编, Chat Server代编, DIY DNS Server代编, and Online-Multiplayer Game代编,Computer Networks代考,TCP Trace代考,Chat Client代考,Socket Programming代考,Python代考, Chat Server代考, DIY DNS Server代考, and Online-Multiplayer Game代考,Computer Networkshelp,TCP Tracehelp,Chat Clienthelp,Socket Programminghelp,Pythonhelp, Chat Serverhelp, DIY DNS Serverhelp, and Online-Multiplayer Gamehelp,Computer Networks作业代写,TCP Trace作业代写,Chat Client作业代写,Socket Programming作业代写,Python作业代写, Chat Server作业代写, DIY DNS Server作业代写, and Online-Multiplayer Game作业代写,Computer Networks编程代写,TCP Trace编程代写,Chat Client编程代写,Socket Programming编程代写,Python编程代写, Chat Server编程代写, DIY DNS Server编程代写, and Online-Multiplayer Game编程代写,Computer Networksprogramming help,TCP Traceprogramming help,Chat Clientprogramming help,Socket Programmingprogramming help,Pythonprogramming help, Chat Serverprogramming help, DIY DNS Serverprogramming help, and Online-Multiplayer Gameprogramming help,Computer Networksassignment help,TCP Traceassignment help,Chat Clientassignment help,Socket Programmingassignment help,Pythonassignment help, Chat Serverassignment help, DIY DNS Serverassignment help, and Online-Multiplayer Gameassignment help,Computer Networkssolution,TCP Tracesolution,Chat Clientsolution,Socket Programmingsolution,Pythonsolution, Chat Serversolution, DIY DNS Serversolution, and Online-Multiplayer Gamesolution,