Please consider offering answers and suggestions to help other students!
And if you fix a problem by following a suggestion here,
it would be great if other interested students could see a short
"Great, fixed it!" followup message.
How do I ask a good question?
Displaying 169 tagged articles
Showing 169 of 503 articles.
Currently 11 other people reading this forum.
Project marks for both the group code component and the individual reflection component are now available via csmarks.
The average for the group component was 20.7 30 and for the reflection 7.0 10, an overall average of 69.2 for the project (quite cl...
Unfortunately, project marks will not be available before the final exams.
Our lab facilitators are making progress in the marking, but also have exams of their own to attend to.
Has There been any news on the demonstration locations? Last time i checked the PDF that was sent out did not have the demonstration location for the 27 05 2024.
Your understanding of the difference between GET and POST is absolutely correct. It s strange that the evaluator claimed they are identical because, as you noted, there are significant differences in terms of purpose, data handling, security, and i...
Did my demo the other day and this has been stuck in my mind since; one of the questions we were asked was why did you choose get over post , posed seemingly as a trick question. I said that since we are expecting a result from the station serve...
As an extension from this, I went into the booking office today and there was no slots available from then on. I asked an office employee and she directed me to simply write my name in the slot I preferred with only two people maximum in each slot. I...
Hi, I was just wondering how is the project going to be assessed? Will we only be assessed on how clearly we can show that our project fulfils everything in the rubric and gives the right results during the demonstration? Or will there also be some m...
thats all you need but if you have a website then submit that, and if your website needs any extra files submit that too.
and you should do any extra c files and the makefile if you have them.
Hi,
The sign up sheet in the CS building only has the time slots for the demo, nothing about the venue is mentioned. Where will we be presenting the demo?
Should we disregard the project brief information of returning the direct route and follow this clarification instead? The idea that the route required is just the fastest to arrive at the destination?
Thanks
Which files do I submit for the project
I know I'll have to submit the C C and Python stationserver files, but am unsure what else to submit.
Should I submit the README.md with instructions on how to run the code (and change which ip's are used)?
I be...
Hi,
I just had some questions about the project that I couldn't find an answer to elsewhere. Apologies if these have already been answered, any help at all would be much appreciated.
I was just wondering
1. Since the marking rubric has been changed ...
Hi Is there any requirement on the UI for how the route is returned to the user. Right now my group just displays the text on an entirely unformatted white page. Is that fine so long as the route is valid, or does it need to be styled?
In the lab I was told by a lab facilitator that it says that we DO NOT need to determine the fastest route but instead just "a valid path" to get full marks. Does this mean that if we return just any valid route we can still get full marks (and not w...
Hi My group has encountered an issue with communicating between 2 computers. Everything works as expected for UDP communication but not all TCP works.
Our set up is like this
Computer 1 IP Address 172.20.10.14
. station-server StationA 4001 4002 127....
Hello,
A while ago I asked about this scenario
Station A has a hop to Station B, but B doesn't have a hop to A. A is allowed to communicate with B, but is B allowed to communicate with A?
Chris said he was thinking about how to resolve this, and I thin...
you get 2 computers and put their ip port in the . station server e.g.
Computer1 on ip 196.62.0.2
. station-server Station1 4001 8001 196.62.0.1 8002
Computer2 on ip 196.62.0.1
. station-server Station1 4002 8002 196.62.0.2 8001
supposedly UnifiIOT shou...
ANONYMOUS wrote
You've been provided a marking rubric; it's not a marking sheet.
If you make a reasonable attempt at each of the rubric's sections, are able to explain and justify your decisions, and the implementation for that section can be easily ...
ANONYMOUS wrote
From Wikipedia (not the best resource, but reliable)
"The maximum IP packet size is 65,535 bytes (2 16-1), including all headers and usually requiring fragmentation. Assuming standard headers, IPv4 uses 20 bytes and UDP 8 bytes. Th...
Hi Henry,
There's no requirement for your protocol to find all station names, and no station should need to know use all other station names in your protocol.
But see https secure.csse.uwa.edu.au run help3002?p np opt B361 year 2024
Each station only...
That clarification would suggest that Path 2 would be chosen for arriving at the final destination sooner, but the line in the clarifications on the 5th of May was what confused me. It says
"Your query should be made directly to the server of station...
Hi Chris,
So I just want to clarify that this means it's not our protocol's responsibility to try collate maintain a list of all available stations in each station, but rather to gleam this from the timetable files in the project? Because we're no...
in marking allocation, marks are allocated for "Ability to find a valid (but not necessarily optimal) route between origin and destination stations". It doesn't really suggest marks for getting fastest route, is there some leeway?
So I'm just wonderin...
Is storing the sequence of ports used only in the udp packet allowed? and then at each node sending it to the next neighbour in the journey, as opposed to flooding the network again?
I'm flooding the network with a udp packet that contains the original udp port it was sent from. Once a route has been found somewhere in the network, it can access this port and send it directly back. Is this allowed? or must it be forwarded back al...
Sorry, but no.
All assessment deadlines, across campus, are set and announced by the first day of each semester. This gives all students the equal chance to plan their workloads, particularly in the latter part of a semester when most assessments are...
I agree that more time would be beneficial. However, the 19th seems more suitable, as it is the Sunday and the project demonstrations start in week 12.
On the Clarifications page
"The fastest journey to a destination (from 'now') is one that arrives at the destination soonest, independent of when it starts."
ANONYMOUS wrote
All stations are aligned by your common protocol, they must send, receive, and act upon your protocol messages in the same way.
Their front-ends, involving the browser, does not have to be identical (though I can't imagine you'd wish ...
; would be appreciated. Have been working on this consistently so far but the extra time would help a lot still.
If you are a student who silently agrees but doesn't want to comment, you can still "like" the comment above mine to show your support ...
Suppose Station A has neighbours B and C. There are two ways to get from A to C.
1. Take a bus directly from A to C, arriving at 12 30pm.
2. Take a bus from A to B, then from B to C, arriving at 12 10pm.
So my question is, if station A finds that statio...
Hi, I'm wondering to what degree the python c implementations must be aligned? I.e. is it enough for the behaviour on the front-end to be identical between server implementations or do the functions we write general protocol logic also need to be...
ANONYMOUS wrote
It's certainly possible, but time prevents me from writing something like that this semester.
I've made a slightly modified buildrandomtimetables.c - https teaching.csse.uwa.edu.au units CITS3002 project2024 buildrandomtimetables.c
wh...
Yes, it's a standard Python module but, as I mentioned a few time in other questions, I worry that your design model is more complicated than it needs to be.
ANONYMOUS wrote
There's no emphasis on speed or great efficiency in this project,
but I'm surprised to read that you're using UDP datagrams in a connected manner (guessing you're using send() rather than sendto() ).
I've found it much easie...
ANONYMOUS wrote
Glad that something's working for you,
though I can see how allowing the select() call to unblock after 10sec would help the datagrams arrive.
It sounds like you don't have all the important descriptors set in your readset .
Yeah, my code is near identical to that format and it was not working, I added a timeout into the select() of 10s and now it gets the neighbours every time (with almost no change to the actual time to get all the names - near instant)
Is it possible to release a demo testing thing similar to the "myscheduler" testing which was set up, but for this project. When determining valid paths especially on large networks of 20 or more stations it becomes very difficult to determine if a p...
My current implementation blocks new udp connections while waiting for acknowledgements from neighbouring hosts to come back for a specific frame. this will slow down response time, will this get marked down?
ANONYMOUS wrote
I appreciate that no-one likes the phrase, but "it works for me"
create bind to your TCP and UDP sockets
sleep(2)
transmit a 'hello' datagram to your neighbours
enter your select() loop
.....
receive 'hello' datagr...
ANONYMOUS wrote
One possibility - if you're starting all of your station servers from a script then, when one of them transmits that first 'hello' datagram, its destination server might not have started yet. The datagram is transmitted, but there's n...
I'm attempting to do this exact thing where as the station starts up it sends its name to all its neighbours (before any requests are made), then in the main server loop with select() each station picks up on neighboring station's names. But for me I...
ANONYMOUS wrote
Not permitted, because it's not what is specified on the project sheet,
and will prevent your project from being tested using some common scripts.
It's trivial to first send a datagram to each of your neighbours, telling them your name....
ANONYMOUS wrote
Ouch I've cut-and-paste that bit from another recent project (and it's been proofread 'a million' times), but you're the first to find that error (thank you ).
It now correctly states
"You must clearly describe your design choices, ...
ANONYMOUS wrote
You're writing two servers, one in language L1 and the other in language L2.
Instances of the server written in L1 should be able to communicate with servers written in L2.
As they need to communicate using (your) common protocol, they'...
Hi chris, we almost finish our project now, but you metioned
"identify what is being protected by your system, how that protection is provided, and identify any known weaknesses with your approach or its implementation"
But nothing was pointed out i...
I am also having problems communicating between devices on the same network (e.g. UnifiIOT). I was developing the python code in WSL2 but after not being able to connect to the server from my phone, I decided to try just running the server program di...
(coincidentally, this was discussed in a tutorial, yesterday)
Stations should not know (or need) the names of all other stations when sending out their queries, other than when identifying a particular destination.
But it is reasonable for each station...
Hi
I want to Know whether is allow one station know the every station name(don't know the localtion, don'tknow the timetable, just name), to insure the station check the validity of input.
ANONYMOUS wrote
Absolutely - as outlined in last week's lecture.
There are ways (but they are very off-topic, and have not been introduced in your degree).
Review last week's lecture, and you'll see you don't require that concurrent execution.
Is it possible to do the C implementation without threading? I am not sure if I am allowed to ask this, but is there a way to run multiple pieces of code concurrently without threads? Sounds dumb but trying to gather any ideas.
ANONYMOUS wrote
ou're welcome to use, change, or ignore any of the scripts and files I've provided, including that HTML page.
I feel it's a simple, useful, change to let the user select the time.
The http request from the generated HTML file does not add a leave time parameter. So do we just use the current time or we can modifiy the HTML to add a parameter for leave time?
ANONYMOUS wrote
(ask me, or my father?)
Yes, you may use fork() , provided that the parent and child only communication using socket-based protocols.
But I'm encouraging you to seriously ask - why do you need a new heavy-weight process, presumably...
After some more reading here
https learn.microsoft.com en-us windows wsl networking
I was sort of right when I said I need to enable some firewall setting. WSL1 lets you do networking out of the box, but WSL2 requires you to port-forward your desire...
I realised that the address printing function was using htons() instead of ntohs(). I changed it, but the ports were still printing unexpected ports. The random ports only appear from outside traffic, and are the same for the duration of the station ...
Hello Sir,
I have started my project implementation using Beej's guide. In the project specification, it states there shouldn't be any reliance on a shared file system or any other inter process communication mechanisms. Beej's guide uses the fork(...
ANONYMOUS wrote
Always difficult to diagnose, but is the receiver converting the port from network-standard-order to host-order before displaying and re-using it?
so we need to respond to user with the entire route? just making sure as in project sheet
"the number, and departure time of the next bus or train leaving the source station that enables the passenger to reach the required destination station, and t...
Hello,
I'm doing the C implementation of the project in WSL2, and I'm up to the part where the stations start communicating between different computers. I have a desktop computer and a laptop, both at home on the same router.
I'm having an issue where...
ANONYMOUS wrote
No, it's not intentional, just something that I hadn't spotted.
...still thinking on this one, with the goal of not making the project any more difficult (in terms of networking) than intended.
ANONYMOUS wrote
Yes, permitted, because they are both 'core' in the C11 snd Python-3.12 standards, so no external libraries or modules required.
However, you'll very likely find that using threads makes your program more complicated to design (and deb...
ANONYMOUS wrote
(disappointing that no-one else has answered this)
The character is not an argument to your station-server.
It is a token for your shell (on both Linux and macOS), requesting that the command be executed in the background
- the comm...
ANONYMOUS wrote
Hey.
The goal is to make a useable web-based application that reports correct information, or indicates if there is no 'solution' to a query.
You will need to ask the starting station-A
"how to I get from station-A to station-B, le...
It is a fact, and 'built-in' feature of UDP, that "If a datagram arrives, it will be uncorrupted" - that statement is not a requirement (to add support) for the project.
I strongly suggest that you read from a textbook or the Beej tutorial to get a ba...
By addressing the unreliability, does that mean we also have to error-check? I'm not sure if " If a datagram arrives, it will be uncorrupted. " is a statement of fact, or a requirement for us to ensure.
ANONYMOUS wrote
This is a Level-3 unit, in which the project's requirements are listed, but actual implementation details are not specified.
You are not being told what you have to do, nor how you have to implement your solution.
The problem is not...
Hey, just wanted to clarify the inputs user makes to get desired output, as well as what the desired output specifically is.
User Input
destination station name
current time - does user input a time when they leave, or will program just get the cur...
Hello,
I've made a python script that looks at the Transperth timetables and makes an adjacency file, similar to buildrandomtimetables.c, which I can then plug into assignports.sh. I've come across a problem where station A has a hop that goes to stat...
"address the unreliability" seems a little vague, it might imply that if a packet is not delivered properly then we just report that and return no value (which addresses it) or it could mean we do something about the packet not being delivered and re...
I've just been having another look at this, and the simplest solution appears to be to just use the default language dialects, without providing specific command-line arguments.
On Linux, using a recent version of gcc ( gcc --version , probably 13...
ANONYMOUS wrote
You do not have to use or mimic the provided scripts - they are provided as a guide to help your understanding, or as a starting point to create modify your own.
The provided materials are not 'part of the project' - the only software ...
ANONYMOUS wrote
I'm unsure what difficulties you're having.
The format of the timetable files is described on the Gatting Started page. You can either use the provided scripts and compiled C file to generate correct (connected) timetables, or genera...
new update I have builded the scheduled time successfully with buildrandomtimetables.c, so do we also need to write our own shell script startstations.sh to run the code on the server?
also for the shellscript buildtransperthtimetables.sh, it says "it will probably download when you click on the link" but it responses "You don't have permission to access this resource." when I try to click on it.
The project description says that we need to handle any issues which occur with the unreliable UDP. Does this mean that we need to implement some sort of stop and wait protocol to ensure the datagrams are delivered properly?
ANONYMOUS wrote
You may use any other materials I've provided.
Note, however, that mywebpage.html and or the script that generated it, will require changing if you have different station names, and begin developing for multiple computers.
So, to confirm, we can use the mywebpage.html page provided and do not need to create our own to query info from the user? Do we just need to figure out how to establish a connection to obtain that information?
Thanks again
Hi Ethan,
In practice this obviously would be physically impossible, so there's only a need to support transfers with at least 1 minute between arriving and leaving (and, in practice, even that 1 minute would be far too short).
ANONYMOUS wrote
I suggest that you keep thinking or designing your protocol - I can't imagine any protocol requiring any UDP message between station-servers to be bigger than a few hundred bytes (given that we've defined the maximum station name size...
ANONYMOUS wrote
Yes, you're welcome to create any additional scripts that you choose
(though I'm unsure why presenting and parsing the data in JSON will make things easier for you).
Hi Chris,
Just for clarification, but if a train arrives from A to B at 6 04am, and a bus departs from B to C at 6 04am, can the person make it?
Thanks,
Ethan
Hello Chris,
How complex does our UDP packet-loss detection have to be? For example, messages might get split, so we could add packet-joining capability. However, most of the messages exchanged between stations are less than 1000 bytes, so it seems un...
Well I've been going through A Guide to Network Programming using Internet sockets, by Brian "Beej" Hall, as suggested in the Getting Started section of the Project, and to use the getaddrinfo() function it is necessary to include the netdb.h heade...
Are we allowed to create a script to convert the plain timetable text files into JSON format so that it is easier to parse and read in server instances?
Hi all, just wanted to clarify for the project, FLASK and any specific 3rd-party frameworks or resources to complete large parts of the project is NOT allowed.
The project requires students to demonstrate their understanding of the network issues, not...
ANONYMOUS wrote
The requirements are that each server, which owns the timetable of a single station, has two open ports
- its TCP IP port for communicating using HTML, typically between a web-browser or the command-line utility 'curl'.
- its UDP IP po...
On the Getting Started page it says that something like this might be a typical invocation for a station server (for python files)
. station-server.py Greenwood-Stn 2402 2560 host4 2567 host1 2408 ....
To get a python script to run like this w...
ANONYMOUS wrote
Once you have implemented either TCP or UDP communication with your servers, you can add a new command to haver them terminate (themselves).
ANONYMOUS wrote
Yes, sys is a (very) standard module, so feel free to use it.
Though I can't see why you'd need to use getopt , as you can simply access elements of sys.argv ?
Is there a quick(er) way to close the instances of py processes which have opened up all the servers. At the moment I've been finding the processes and killing them manually using
pgrep -af python3 then finding the right ones then killing
But is the...
In python, to start a station server we need the ability to get the arguments from the commands which invoke the stations. Are we allowed to import sys or the getopt module from python to achieve this?
ANONYMOUS wrote
Your question is not really about compilers, but about language standards or dialects
https gcc.gnu.org onlinedocs gcc-13.2.0 gcc Standards.html C-Language
If needing to use -std gnu11, rather than just -std c11 (gcc's current def...
Are there any restrictions on the compilers we should be using for the project, like in previous CITS units? Or do we have more freedom?
For example, I am trying to use some header files that only work if I use the -std gnu11 flag, which would still b...
Hi,
I was wondering if the mywebpage.html file was able to be used as an interface for our project or if we were required to create one.
Also, does each webpage need to only include options from all other stations or just the station that it is? My und...
Implementing this project using asynchronous I O is probably 'overkill' for the type and frequency of traffic your project will transmit and receive. You may prefer an approach involving https docs.python.org 3.12 library select.html select.select...
ANONYMOUS wrote
When using UDP, its packets may be lost (though not corrupted, or incorrectly delivered).
Your project will need to account for that possible loss.
Sorry, that was badly worded. Your project will need to eventually execute on multiple ...
The getting started section of the project links to asyncio programming to setup the server. I'm having trouble going beyond the examples on the documentation page. Is there a better place to figure out asyncio servers programming or should I give up...
Hi Chris,
Are we expected to implement UDP ACKs NACKs, or do we assume that UDP packets will always arrive? It's never explicitly said if we have to, even though the project description does say that UDP is unreliable.
Also, for the demo, do we have t...
ANONYMOUS wrote
The longest in the Transperth dataset appears to be 'St Georges Tce Before William St Eastbound',
so if we set the max to be 60 chars we'll be safe.
(not a fan of dynamic memory?)
Hello Ethan,
Let's assume (guarantee) that every journey can be completed on the day it was started - if a requested journey can't be completed by 11 59PM any day, then it "doesn't exist", and that condition should be reported back via the web-browse...
ANONYMOUS wrote
The project requires two or more programs to communicate across a network. If all goes well - great - and the successes will be the correct meaningful results.
But a number of things can go wrong - network messages not delivered, inva...
Hi,
Just checking, but if you reach an intermediate station at 10pm, and the last train was at 9pm, should you wait until the next train at 6am the next day, or just say you cannot get to the destination?
(Also, can we assume that the timetable will be...
Hi, this is referring to the clarifications page of the project.
At the bottom of the page, we are told to focus on a couple questions.
One of these questions is How will success and failures be communicated?
I was just wondering what is meant by succe...
Hello,
ANONYMOUS wrote
Not sure what you mean by 'hints' here.
For the project, you may assume that all addresses in use are IPv4, as not all (limited) devices support IPv6 and not all systems choose to enable support it by default.
They should all be ...
ANONYMOUS wrote
Each station-server will be reading its station's timetable information from a file on the local disk. The file's name will not change.
At any time, that file's contents may be updated to provide new timetable information, that should ...
ANONYMOUS wrote
This is a very relevant question, and a good one to be asked at this stage, but it's the sort of question you should be discussing with your team members (please).
ANONYMOUS wrote
3. each station server will accept queries about its timetable data from a standard web-browser (a passenger making a query from their mobile phone). The query and reply will be transmitted using the (minimum amount necessary of the) ...
no station server should ever contain all knowledge about the whole network, timetabling data, or network connections. Each station's timetabling data, recorded in one textfile for each station, may change at any time (for example, if a bus breaks do...
Hi,
I have a bunch of questions and I thought I'd just make one post instead of many small ones.
1) What kind of hints should we use for sockets? Does supporting IPv4 6 matter? In the real world, is there such thing as a device that only uses IPv4 or ...
ANONYMOUS wrote
The fastest journey is one that arrives at the destination soonest - even if you have to wait around at the starting platform before the first leg.
Hi Chris, hoping for clarification on the following dot point
Ideally, the returned result will be the fastest journey - even if it leaves later or includes more segments (hops) than other journeys (but firstly, just report any any valid journey )
S...
ANONYMOUS wrote
Yes, that's exactly as expected. That is what the web-browser is sending the the 'nc' process, which is listening on port 4444.
Probably because you're missing the colon before the 4444.
So after running nc -l 4444, I get this output in terminal
GET HTTP 1.1
Host localhost 4444
Connection keep-alive
sec-ch-ua "Google Chrome";v "123", "Not A-Brand";v "8", "Chromium";v "123"
sec-ch-ua-mobile ?0
sec-ch-ua-platform "macOS"
Upgrade-Insec...
I think it was when I downloaded the files, the calendar.txt was missing (for some unknown reason), so I went back and downloaded it again and checked the files.
ANONYMOUS wrote
That's very odd - which platform?
Wondering if you don't have a name mapping to 127.0.0.1 (which would be odd).
Can you access - 127.0.0.1 4444 ??
Ahh, that's where I got up to yesterday before going home; I've marked it as 'Under Co...
ANONYMOUS wrote
Yes, a station will almost certainly need to know (and remember) the names of its neighbour(s), which it can 'learn' simply by ask each neighbour.
Hello,
How much are stations allowed to know about their neighbours? They're allowed to know about bus train destination names obviously. The marking rubric says no station can collate information about the whole transport-network. However, are the st...
I'm going through the getting started page of the project, and after running
nc -l 4444
for portsinuse.sh, I can't seem to connect to the localhost 4444.
Also, for the buildtransperthtimetables.sh, after making the file executable and running it, it giv...
looking for 2 people to team up for the project. Email me at 233 3 0 t d n . w . d . u o o t i u e s , I c n t s e o c n e t t h o a h s 4 4 A s , f r t e b i d r n p r h i e a l s s , a t r m k n h i e e e u a l n u n n t t...
Hey Chris, hope your having a good day.
Just wanted to ask you about the maximum number of people allowed for each team on the project just so my team doesn't have to kick anyone out by the time the project instructions are released?
Thank you