Sponsored Content
Top Forums Programming Write the source code for messenger Post 302094196 by nathan on Thursday 26th of October 2006 12:25:31 AM
Old 10-26-2006
I'm actually trying to do the same thing (write a simple instant messenger program) but am running into a few problems.

Right now I am just focusing on the "communication" portion, using a command-line interface. I plan to add the GUI stuff later.

I am using C++ and the sockets api and have taken the approach of building both a "Server" and "Client" class. I have designed my instant messaging application to have both the server and client in one executable program.

So, in my main() function, I will:
1) Create an instance of Server ( for example, "Server my_serv( ); " )
2) Create an instance of Client ( for example, "Client my_cli( ); " )
3) Start the server ( for example, my_serv.start() )
4) Client stuff... ( connect to remote computer, enter text data to send, etc ).

One problem I have run into with this approach:

I attempt to start the server then use the client functionality, but then my program hangs, because the socket program is listening for a connection. ( I've tried non-blocking IO with the fcntl call below ).
This bit just gets all current flags for the file descriptor sd1, then adds the O_NONBLOCK flag to it.
Code:
  rc |= fcntl( sd1 , F_SETFL , ((fcntl( sd1 , F_GETFL ))|O_NONBLOCK) );

I believe I might need to use the select() function, but I'm not sure if I'm headed down the wrong path.

Would it be best to split this up into 2 programs ( i.e. one as a server and the other as a client )? Or could (should?) I use fork(), start the server in one process, then the client in the other? (I've tried the fork()ing approach, but had some problems.)

I'm trying to get an idea of how the program would be best designed. Any ideas are appreciated.
 

8 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Where can I review the source code?

A very n00b question: After compiling and installing software, where does the original source code reside? I'd like to study the source code of some of the ports I've installed. Thanks! :D (1 Reply)
Discussion started by: Aaron Van
1 Replies

2. Shell Programming and Scripting

write page source to standard output

I'm new to PERL, but I want to take the page source and write it to a file or standard output. I used perl.org as a test website. Here is the script: use strict; use warnings; use LWP::Simple; getprint('http://www.perl.org') or die 'Unable to get page'; exit 0; ... (1 Reply)
Discussion started by: wxornot
1 Replies

3. IP Networking

read/write,write/write lock with smbclient fails

Hi, We have smb client running on two of the linux boxes and smb server on another linux system. During a backup operation which uses smb, read of a file was allowed while write to the same file was going on.Also simultaneous writes to the same file were allowed.Following are the settings in the... (1 Reply)
Discussion started by: swatidas11
1 Replies

4. UNIX for Dummies Questions & Answers

Where can i get unix source code?

Sir please tell me where can i get source code for some unix kernal and shell also. (1 Reply)
Discussion started by: VIPUL15
1 Replies

5. Shell Programming and Scripting

Block of code replacement in Java source code through Unix script

Hi, I want to remove the following code from Source files (or replace the code with empty.) from all the source files in given directory. finally { if (null != hibernateSession && hibernateSession.isOpen()) { //hibernateSession.close(); } } It would be great if the script has... (2 Replies)
Discussion started by: hareeshram
2 Replies

6. Linux

Source code

I need the source code of fedora. plz plz plz help me........... (1 Reply)
Discussion started by: neh
1 Replies

7. Shell Programming and Scripting

Source code compilation

Need assistance in Source code compilation . When installing a software compiling a source code . Whatever the output that prints on the screen i want to log it into a file. How can i see output and store the output to file ./configure make make install Is there other way of seeing output... (5 Replies)
Discussion started by: ajayram_arya
5 Replies

8. UNIX for Dummies Questions & Answers

Source code

hii... i am a biginner....and i have linux source code ,downloaded from some website ,a compressed file on windows and dont know how do compile them..... (4 Replies)
Discussion started by: M K Raju
4 Replies
RT::Client::REST::Exception(3pm)			User Contributed Perl Documentation			  RT::Client::REST::Exception(3pm)

NAME
RT::Client::REST::Exception -- exceptions thrown by RT::Client::REST methods. DESCRIPTION
These are exceptions that are thrown by various RT::Client::REST methods. EXCEPTION HIERARCHY
RT::Client::REST::Exception This exception is virtual -- it is never thrown. It is used to group all the exceptions in this category. RT::Client::REST::OddNumberOfArgumentsException This means that the method you called wants key-value pairs. RT::Client::REST::InvaildObjectTypeException Thrown when you specify an invalid type to "show()", "edit()", or "search()" methods. RT::Client::REST::RequiredAttributeUnsetException An operation failed because a required attribute was not set in the object. RT::Client::REST::MalformedRTResponseException RT server sent response that we cannot parse. This may very well mean a bug in this client, so if you get this exception, some debug information mailed to the author would be appreciated. RT::Client::REST::InvalidParameterValueException Invalid value for comments, link types, object IDs, etc. RT::Client::REST::CannotReadAttachmentException Cannot read attachment (thrown from methods "comment()" and "correspond"). RT::Client::REST::RTException This is a virtual exception and is never thrown. It is used to group exceptions thrown because RT server returns an error. RT::Client::REST::ObjectNotFoundException One or more of the specified objects was not found. RT::Client::REST::AuthenticationFailureException Incorrect username or password. RT::Client::REST::UpdateException This is a virtual exception. It is used to group exceptions thrown when RT server returns an error trying to update an object. RT::Client::REST::CouldNotSetAttributeException For one or another reason, attribute could not be updated with the new value. RT::Client::REST::InvalidEmailAddressException Invalid e-mail address specified. RT::Client::REST::AlreadyCurrentValueException The attribute you are trying to update already has this value. I do not know why RT insists on treating this as an exception, but since it does so, so should the client. You can probably safely catch and throw away this exception in your code. RT::Client::REST::ImmutableFieldException Trying to update an immutable field (such as "last_updated", for example). RT::Client::REST::IllegalValueException Illegal value for attribute was specified. RT::Client::REST::UnknownCustomFieldException Unknown custom field was specified in the request. RT::Client::REST::InvalidQueryException Server could not parse the search query. RT::Client::REST::UnauthorizedActionException You are not authorized to perform this action. RT::Client::REST::AlreadyTicketOwnerException The owner you are trying to assign to a ticket is already the owner. This exception is usually thrown by methods "take()", "untake", and "steal", if the operation is a noop. RT::Client::REST::RequestTimedOutException Request timed out. RT::Client::REST::UnknownRTException Some other RT exception that the driver cannot recognize. METHODS
_get_exception_class Figure out exception class based on content returned by RT. _rt_content_to_exception Translate error string returned by RT server into an exception object ready to be thrown. SEE ALSO
Exception::Class, RT::Client::REST. AUTHOR
Dmitri Tikhonov <dtikhonov@yahoo.com> perl v5.14.2 2011-12-27 RT::Client::REST::Exception(3pm)
All times are GMT -4. The time now is 09:07 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy