Socket programming

the.chojin the.chojin at nospan.com
Wed May 3 13:33:38 PDT 2006


Hi everyone,

I am new in D, for my first test I try to develop a simple TCP client/server
program, but the server side can not receive data and always return
Socket.ERROR although client side return the good sended bytes number.

If anyone can help me.

@+

My server side :

int main(char[][] args)
{
 ushort port;
 InternetAddress adress;
 Socket listener;

 char [1024] buffer;

 /* if it not specified listen on the port 4444 */
 if(args.length >= 2)
 {
  port = std.conv.toUshort(args[1]);
 }
 else
 {
  port = 4444;
 }

 listener = new TcpSocket;

 /* test if the listener was created correctly */
 assert(listener.isAlive);

 /* nonblocking socket */
 listener.blocking = true;

 /* listen on port */
 listener.bind(new InternetAddress(port));

  {
  listener.shutdown(SocketShutdown.BOTH);
 }
 /* listen only 1 connection */
 listener.listen(10);

 printf("Listening on port %d.\n", cast(int)port);

 /* waiting for a connection */
 try {
  int erreur = 1;

  listener.accept();

  printf("Connected\n");

  while( erreur != 0 && erreur!= Socket.ERROR ) {

   /* read the socker buffer */
   erreur = listener.receive(buffer);

   if( Socket.ERROR  != erreur ) {
    printf("Received %d bytes : %.*s\n", cast(int)erreur,
buffer[0..erreur]);
   } else {
    printf("Error during receiving\n");
   }

----------------------------------------------------------------------

My client side :

int main(char[][] args)
{
 ushort port;
 InternetAddress adress;
 Socket listener;
 int cpt = 0;

 char [] buffer = "Bouyour";

 const char[] adressIP = "127.0.0.1";

 /* if it not specified listen on the port 4444 */
 if(args.length >= 2)
 {
  port = std.conv.toUshort(args[1]);
 }
 else
 {
  port = 4444;
 }

 listener = new TcpSocket;

 /* test if the listener was created correctly */
 assert(listener.isAlive);

 try {
  listener.connect(new InternetAddress(adressIP, port));
 } catch {
  printf("Connection refused !!\n");
 }

 printf("Client connected\n");

 while((cpt++ - 10)) {
  int erreur = 0;
  erreur = listener.send(buffer);

  if(Socket.ERROR  != erreur) {
   printf("Sending %d bytes : %.*s\n", cast(int)erreur, buffer[0..erreur]);
  } else {
   printf("Error during Sending\n");
  }





More information about the Digitalmars-d-learn mailing list