Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

socket.c

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*/
00016 /*---------------------------------------------------------------------------*/
00017 
00018 #include "socket.h"
00019 
00020 /*---------------------------------------------------------------------------*/
00027 /*---------------------------------------------------------------------------*/
00028 int     TCPServerInit( int port, int *serverfd)
00029 {
00030         struct sockaddr_in dest;
00031 
00033         *serverfd = socket(PF_INET, SOCK_STREAM, 0);
00034 
00036         bzero((void*)&dest, sizeof(dest));
00037         dest.sin_family = PF_INET;
00038         dest.sin_port = htons( port);
00039 
00040         dest.sin_addr.s_addr = INADDR_ANY;
00041 
00043         bind( *serverfd, (struct sockaddr*)&dest, sizeof(dest));
00044 
00045         return *serverfd;
00046 }
00047 
00048 /*---------------------------------------------------------------------------*/
00056 /*---------------------------------------------------------------------------*/
00057 int     TCPServerWaitConnection( int serverfd, int *clientfd, char *clientaddr)
00058 {
00059         struct sockaddr_in client_addr;
00060         socklen_t addrlen = sizeof(client_addr);
00061 
00063         listen( serverfd, 20);
00064 
00066         *clientfd = accept(serverfd, (struct sockaddr*)&client_addr, &addrlen);
00067 
00068         strcpy( clientaddr, ( const char *)inet_ntoa( client_addr.sin_addr));
00069 
00070         return *clientfd;
00071 }
00072 
00073 /*---------------------------------------------------------------------------*/
00079 /*---------------------------------------------------------------------------*/
00080 int     TCPClientInit( int *clientfd)
00081 {
00082         *clientfd = socket(PF_INET, SOCK_STREAM, 0);
00083 
00084         return *clientfd;
00085 }
00086 
00087 /*---------------------------------------------------------------------------*/
00095 /*---------------------------------------------------------------------------*/
00096 int     TCPClientConnect( const int clientfd, const char *addr, int port)
00097 {
00098         struct sockaddr_in dest;
00099 
00101         bzero(&dest, sizeof(dest));
00102         dest.sin_family = PF_INET;
00103         dest.sin_port = htons( port);
00104         inet_aton( addr, &dest.sin_addr);
00105 
00107         return connect(clientfd, (struct sockaddr*)&dest, sizeof(dest));
00108 }
00109 
00110 /*---------------------------------------------------------------------------*/
00118 /*---------------------------------------------------------------------------*/
00119 int     TCPNonBlockRead( int clientfd, char* buf, int size)
00120 {
00121         int opts;
00122         opts = fcntl(clientfd, F_GETFL);
00123         opts = (opts | O_NONBLOCK);
00124         fcntl(clientfd, F_SETFL, opts);
00125 
00126         return recv( clientfd, buf, size, 0);
00127 }
00128 
00129 /*---------------------------------------------------------------------------*/
00137 /*---------------------------------------------------------------------------*/
00138 int     TCPBlockRead( int clientfd, char* buf, int size)
00139 {
00140         int opts;
00141         opts = fcntl(clientfd, F_GETFL);
00142         opts = (opts & ~O_NONBLOCK);
00143         fcntl(clientfd, F_SETFL, opts);
00144 
00145         return recv( clientfd, buf, size, 0);
00146 }
00147 
00148 /*---------------------------------------------------------------------------*/
00156 /*---------------------------------------------------------------------------*/
00157 int     TCPWrite( int clientfd, char* buf, int size)
00158 {
00159         int len= 0;
00160         len= send( clientfd, buf, size, 0);
00161 
00162         return len;
00163 }
00164 
00165 /*---------------------------------------------------------------------------*/
00171 /*---------------------------------------------------------------------------*/
00172 void    TCPClientClose( int sockfd)
00173 {
00174         close( sockfd);
00175 }
00176 
00177 /*---------------------------------------------------------------------------*/
00183 /*---------------------------------------------------------------------------*/
00184 void    TCPServerClose( int sockfd)
00185 {
00186         close( sockfd);
00187 }
00188 

Generated on Thu Oct 6 09:13:41 2005 for Example Modbus Library by  doxygen 1.4.4