home *** CD-ROM | disk | FTP | other *** search
/ Java 1996 August / Java - Summer 1996.iso / kaffe-0.2 / lib / net / java.net / java.net.DatagramSocket.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-19  |  2.0 KB  |  93 lines

  1. /*
  2.  * java.net.DatagramSocket.c
  3.  *
  4.  * Copyright (c) 1996 Systems Architecture Research Centre,
  5.  *           City University, London, UK.
  6.  *
  7.  * See the file "license.terms" for information on usage and redistribution
  8.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  9.  *
  10.  * Written by Tim Wilkinson <tim@sarc.city.ac.uk>, February 1996.
  11.  */
  12.  
  13. #include <stdio.h>
  14. #include <sys/types.h>
  15. #include <sys/socket.h>
  16. #include <netinet/in.h>
  17. #include <native.h>
  18. #include "../../native/java.io/java.io.FileDescriptor.h"
  19. #include "java.net.DatagramPacket.h"
  20. #include "java.net.DatagramSocket.h"
  21. #include "nets.h"
  22.  
  23. /*
  24.  * Create a datagram socket.
  25.  */
  26. void
  27. java_net_DatagramSocket_datagramSocketCreate(struct Hjava_net_DatagramSocket* this)
  28. {
  29.     int fd;
  30.  
  31.     fd = threadedCreateSocket(AF_INET, SOCK_DGRAM, 0);
  32.     unhand(unhand(this)->fd)->fd = fd;
  33.     if (fd < 0) {
  34.         SignalError(0, "java.net.SocketException", SYS_ERROR);
  35.     }
  36. }
  37.  
  38. /*
  39.  * Bind a port to the socket.
  40.  */
  41. long
  42. java_net_DatagramSocket_datagramSocketBind(struct Hjava_net_DatagramSocket* this, long port)
  43. {
  44.     int r;
  45.     struct sockaddr_in addr;
  46.  
  47. #if defined(BSD44)
  48.     addr.sin_len = sizeof(addr);
  49. #endif
  50.     addr.sin_family = AF_INET;
  51.     addr.sin_port = port;
  52.     addr.sin_addr.s_addr = INADDR_ANY;
  53.  
  54.     r = bind(unhand(unhand(this)->fd)->fd, (struct sockaddr*)&addr, sizeof(addr));
  55.     if (r < 0) {
  56.         SignalError(0, "java.net.SocketException", SYS_ERROR);
  57.     }
  58.  
  59.     return (addr.sin_port);
  60. }
  61.  
  62. void
  63. java_net_DatagramSocket_datagramSocketSend(struct Hjava_net_DatagramSocket* this, struct Hjava_net_DatagramPacket* pkt)
  64. {
  65.     abort();
  66. }
  67.  
  68. long
  69. java_net_DatagramSocket_datagramSocketPeek(struct Hjava_net_DatagramSocket* this, struct Hjava_net_InetAddress* addr)
  70. {
  71.     abort();
  72. }
  73.  
  74. void
  75. java_net_DatagramSocket_datagramSocketReceive(struct Hjava_net_DatagramSocket* this, struct Hjava_net_DatagramPacket* pkt)
  76. {
  77.     abort();
  78. }
  79.  
  80. /*
  81.  * Close the socket.
  82.  */
  83. void
  84. java_net_DatagramSocket_datagramSocketClose(struct Hjava_net_DatagramSocket* this)
  85. {
  86.     int r;
  87.  
  88.     r = close(unhand(unhand(this)->fd)->fd);
  89.     if (r < 0) {
  90.         SignalError(0, "java.net.SocketException", SYS_ERROR);
  91.     }
  92. }
  93.