digitalmars.D - socket applications
- lee (86/86) Feb 21 2006 I'm stuck. I haven't been able to find a tutorial that outlines the
I'm stuck. I haven't been able to find a tutorial that outlines the creation of client programs using the phobos library. The following program is my best guess as to how such a program could be written. I'm trying to send data to a program similar to the listner app that came with the d compiler. I'm still not certain about what steps are to be taken when creating a network connection, and I don't know what functions to implement from the library. The code that follows below doesn't work, and I would like to know why. What's wrong with it? How could it be fixed? And, How could I achieve my goal with a different design? Lee import std.conv; import std.socket; Socket create_socket (Socket client_socket) { client_socket = new TcpSocket; printf ("creating socket... \n"); assert (client_socket.isAlive); return client_socket; } Socket initialize_socket (Socket client_socket) { client_socket.blocking = false; client_socket.listen (10); printf ("initialized socket... \n"); return client_socket; } Socket bind_socket (Socket client_socket, ushort port) { printf ("binding socket to port... \n"); client_socket.bind (new InternetAddress (port)); return client_socket; } int form_connection (Socket client_socket, Address host_address_a) { uint connection_status; connection_status = 1; printf ("connecting to host... \n"); client_socket.connect (host_address_a); return connection_status; } int transmit_information (Socket client_socket, Address host_address_a, char[1024] message) { uint connection_status; connection_status = 2; printf ("transmitting message... \n"); client_socket.sendTo (message, host_address_a); return connection_status; } int close_connection (Socket client_socket) { SocketShutdown BOTH; uint connection_status; connection_status = 0; printf ("shutting down connection... \n"); client_socket.shutdown (BOTH); printf ("closing socket... \n"); client_socket.close (); return connection_status; } int main () { uint connection_status; uint host_address; short host_port; Address host_address_a; ushort port_address; Socket client_socket; char[1024] message = "transmission from client.\n";; host_port = 4444; // adjust for real values host_address = 1223001; // adjust for real values host_address_a.addr = host_address; host_address_a.port = host_port; printf ("beginning network operations... \n"); client_socket = create_socket (client_socket); client_socket = initialize_socket (client_socket); client_socket = bind_socket (client_socket, port); connection_status = form_connection ( client_socket, host_address_a); connection_status = transmit_information (client_socket, host_address_a, message); connection_status = close_connection (client_socket); printf ("concluded network operations... \n"); return 1; }
Feb 21 2006