CS 519 Final Project Report

Internet Phone




Date: Oct. 27, 98

Name of Group : G1

Team members: Jing Deng, Rung-Hung Gau

Task: Accounting (#5)



What have you done since the first report?
What problems did you run into?
What did you learn
What would you do differently next time?
Interface that your team will provide to other teams or use
What do you need from the course staff
Reference
Go back to report index of our team

What have you done since the first report?

Since we have never used Java before this course, we first create a simple window interface by Java with event handling. This gives us some confidence that we should be able to implement a more complicated window interface by adding more window objects.

We have learned JDBC and have set the ODBC data source administrator in the control panel correctly so that we can use a Java program to access an MS-Access database in Windows 95/NT. More precisely, we know how to read, update, and query the database for accounting purposes.

We also found some Java codes of socket programming, which include the server and the client in the client/server model. Later, we should be able to send a request from a client to a server, which in turn will perform corresponding operations on the MS-Access database.

Research has been done on the authentication. We tried to obtain a way to encrypt message into non-understandable data by outsiders. To do this, we tried to obtain a PGP (Pretty Good Privacy) signature, but failed, because we are not US citizens. We are still trying to get more information on authentication.

We are waiting for the group meeting on this Saturday to make clear what are the interfaces among different groups. We are not sure about what kind of interface other related teams (Signaling, team #2, and Directory, team #4) can give us. It is not so clear in the report 1 from them, such as stubs.



What problems did you run into?

We were too optimistic in our schedule when we were preparing our report one. We should be more conservative about this. More unexpected things will happen in the research.

Also, each of us has spent too much time on puzzles (especially puzzle 3). So the progress is not so good.

Another problem is that we can't get the PGP signature. So we need to find alternatives for it.



What did you learn?

First, we had a chance to learn Java. Before this course, we only had experience about C/C++. We felt that Java programming is very similar to C++ programming in many aspects. Nevertheless, we understood the ways these programming languages were designed and executed are not identical.

We learned JDBC, which is really fantastic to us. It was the first time we felt that Java is so powerful and exceptional. Probably it was due to the fact that we did not have any experience in database programming before. However, we were really impressed by that Java could provide a universal access method to various databases.

We also learned socket programming in Java. Although socket programming in nothing new to us, we did socket programming in C/C++ earlier. We think that it is important for Java to make network programming easily in order to gain support.

We learned some basic ideas about authentication, or more widely, security issues. When we wrote our codes before, we seldom, if not never, took security issues into consideration. Lack of available supporting functions made us ignore security aspect of a program intentionally. In Java, security is an integrated part of the language. I believe that security requirements will become unavoidable in the near future.



What would you do differently next time: Mistakes you don't want to repeat!

Be more conservative in schedule. Unexpected events happen and consume a lot of time.

It is better to be ahead of the schedule rather than behind it. We can also eschew from the dilemma to explain our delay to managers or customers in the future.



Interface that your team will provide to other teams or use. Please give the exact procedure calls that you will make or support.

Our program will communicate with signaling team and directory team through TCP connections. The networking part of our program is composed of a server and a client. The server waits for the message from signaling team. Whenever, a call is initialized or terminated, the signaling team has to send a message through a TCP connection to our server. When the server get the message, it will update the database accordingly.

The client sends a request to directory team in order to obtain the identity of participants of a call. Upon receiving reply from the directory team, the client writes the identity of callers and callees in the database.

The packet from signaling team contains the following fields.

1. Version: version of the protocol, which can be used to upgrade our communication protocol.

2. IPhone Type: message type, which identify the category of Internet Phone. Now, we have four types: host to host, host to phone, phone to host, phone to phone.

3. Control Type: The field is used to identity a message is for a call initialization or a termination.

4. Call Information: The IP address, port or phone number for a caller and a callee.

 

The packet to directory team contains the following fields.

1. Version: version of the protocol, which can be used to upgrade our communication protocol.

2. Terminal type: A terminal can be a host or telephone.

3. Terminal Information: This field contains the IP address and port number of a terminal if a terminal is a computer, or host. On the contrary, this field contains the telephone number is a terminal is a telephone.

The packet from directory team contains the following field.

1. Version: version of the protocol, which can be used to upgrade our communication protocol.

2. Terminal type: A terminal can be a host or telephone.

3. Terminal Information: This field contains the IP address and port number of a terminal if a terminal is a computer, or host. On the contrary, this field contains the telephone number is a terminal is a telephone.

4. User identity: The corresponding user identity to the above terminal. This message basically tells the accounting server who owns a socket in a computer or a telephone number. The user identity can be composed of a name and a social security number.



What do you need from the course staff: give details on documentation, advice, codes, an access to hardware.

It seems that we have fundamental software techniques for this project, at least we know how to find them. We know that we will have to do some research on pricing policy very soon. We saw a lot of reference in the class web site. We would appreciate the help if the course staff can point out a good starting point since there are so much information there and our schedule is so stressing.



Reference:

[1] Barry Holmes, "Programming with JAVA" is the first book we used to learn JAVA including window programming in Java.

[2] W. Richard Stevens, "Unix Network Programming" is the book we used to learn socket programming.

[3] Cay S. Horstmann, Gary Cornell, "Core Java 1.1 Volumn II- Advanced Features" is the book we use to learn JDBC.

[4] The website for PGP (Pretty Good Privacy) at MIT http://web.mit.edu/network/pgp.html

[5] The website with some links to some security sites http://www-cse.ucsd.edu/users/bsy/sec.html. Hopefully we can find some useful stuff here.

[6] The tutorial for RMI (Random Method Invocation) in Java is on http://www.javasoft.com/docs/books/tutorial/rmi/index.html



Go back to report index of our team