Next: ISDN
Up: Kommunikationsprotokolle
Previous: PPP
Die Socket-Schnittstelle wurde bereits in Abschnitt 2.2.4 vorgestellt.
Das folgende C-Programm enthält die Initialisierungssequenz für eine TCP-Socketverbindung auf der Serverseite:
#include <vxWorks.h>
#include <sockLib.h>
struct sockaddr_in serverAddr; /* server's socket address */
int sFd; /* socket file descriptor */
int sockAddrSize; /* size of socket address structure */
const int one = 1;
const int keepalive_value = 1;
/* choose local address*/
sockAddrSize = sizeof (struct sockaddr_in);
bzero ((char *) &serverAddr, sockAddrSize);
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons (SERVER_PORT_NUM);
serverAddr.sin_addr.s_addr = htonl (INADDR_ANY);
/* create the TCP-socket */
sFd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)
/* socket options*/
setsockopt(sFd, SOL_SOCKET,SO_REUSEADDR,(char *)&one,sizeof(one));
setsockopt(sFd, SOL_SOCKET,SO_KEEPALIVE,(char *)&keepalive_value,
sizeof(keepalive_value));
/* bind socket to local address*/
bind(sFd, (struct sockaddr *) &serverAddr, sockAddrSize);
listen(sFd, SERVER_MAX_CONNECTIONS);
.
.
Nach der Initialisierung kann der Server ein accept() ausführen. Erfolgt eine Anfrage durch den Client, kehrt accept() zurück und die Verbindung ist aufgebaut. Der Server kann mit read()- und write()-Operationen Daten mit dem Client austauschen:
struct sockaddr_in clientAddr; /* client's socket address */
int newFd; /* socket descriptor from accept */
newFd = accept (sFd, (struct sockaddr *) &clientAddr,&sockAddrSize);
nRead = read(newFd, &request_message[0],REQUEST_MSG_SIZE);
Thorsten Thormaehlen
2000-03-27