Overview
1.1 Introduction
In this programming you will construct a simple peer-to-peer based relay application. This application will demonstrate the basic operation of peer-to- peer communication.
For this lab, you need to write a client and a server utilizing TCP socket connections. The client must be able to connect to the server and obtain a list of available clients. After obtaining this list, the client must be able to connect to one other client on the list. The clients must then be capable of relaying text messages directly to one another without further help from the server.
You can define whatever convention you would like to indicate that a text message is complete (e.g. hitting [Enter], clicking send). Each client must send an acknowledgement to the other client that a text message has been received and displayed. You must also provide some way to disconnect and end the conversation. After disconnecting, the user should be able to retrieve a new copy of the server’s client list and connect to a new client. The connection between the two clients must be duplex, so both clients are capable of transmitting and receiving at the same time.
This can be envisioned as a simple chat application, where you can figure out who is online from the server and then talk to those other users directly.
2 Network Programming
The goal of this assignment is to learn socket programming in a peer-to-peer context. You can use any IP addresses you would like for communication. The use of the C programming language is strongly encouraged, but not required. You may also use Python. The idea behind using C is to ensure that you really use the sockets to interface with the network - don’t use any libraries that abstract away the networking part of this network application.
If you are using C, you have to use system calls like socket(), bind(), listen(), accept(), connect(), and close(). For a detailed tutorial refer to Beej’s guide:
[login to view URL] [login to view URL]
Don’t hesitate to seek out other tutorials or reference sources online.
2.1 Hints
Here are a few hints that may help you as you write the program.
• You have to choose a server port to connect to. Ports from 1-1023 are mostly used for certain services and require administrative privileges. Use port numbers greater than at least 1023.
• Close your sockets cleanly before exiting the program. If you abort the program, the port may not be freed.
• Use at least 3 different machines to run all of the processes. You can run some, but not all, of the
processes on the same machine. For one machine, just use localhost. You can use ifconfig
(unix) or ipconfig (windows) to determine the IP address for testing across multiple machines.
• Be wary of overzealous firewalls stopping your connections - try temporarily disabling firewalls if you find your connections timeout or are denied.
• Don’t forget that Wireshark can watch what your program is transmitting, possibly helping you during debugging.
I have prior experience in preparing network projects. I can implement the required code (with lot of comments for easy understand the steps).
I will have a network diagram included on the deliverables in order to explain the test performed. The lab for testing will be build with virtual machines.
I'm qualified python developer with experience in data scrapping, autamatation, web developing etc. I know sockets wery well, it woul be easy to do it without any librarys. Also I've alredy coded something similar when i was styding, so i can update it to your requrments to satisfy you.
Hi,
Hope you are doing good.
I am glad that you have put out such an assignment. I would like to take this opportunity and place a bid for this project.
I am quite glad that you have put out the problem statement quite neatly. And i am confident that i should be able to finish the assignment. Without much hassle.
I have over 5.5 years of work experience in python development. I also have automation and cloud exposure. I have previously made chat application so i should be able to use my experience completing the task.
Please do let me know how you want to proceed
This is a straightforward application that can be easily programmed in C. I have 6 years experience writing systems-level C for networked applications due to my robotics experience.
I will complete the project in stages so that we can have good, quick progress.
Please contact me with any questions. Looking forward to working with you.
Hi Dear Programer. My name is Both Attila. I'm 17 years student programer. I wrote already program. This the project simple practite. The program idea is that , the client connecting the server , the server save is , ID, Status, TCP/IP Address. If the connecting client customer writing subordinates the connection. If subordinate writeing message the id send want to id. I hope that we can together working. Thank you that reading the price offer. by Both Attila (Nickname: admin_hazard) :)
Hmm I'm C/Python programer..
dear sir,
I use python to programing tcp socket.
app will use cmd (windows) or terminal (linux).
if you want, i had write peer to peer application behind NAT on Internet environment.
thank you!
Hi,
I am an experienced C/C++/C# programmer. I can make this application in C/C++/Python as you prefer.
But as you said it is good to have C as the programming language, that will have more control over this application.
Also you did not mention what should be the interface of the application.
Console or UI please mention that.
Please refer to my FTP client/server project i did for a project work for my experience in network programming.
Thanks.