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