Ejemplo n.º 1
0
int main(int argc, char* argv[]) {
  int listenfd, connfd;
  struct sockaddr_in addr;
  char buf[256];
  time_t tick;

  network_init();

  listenfd = common_socket(AF_INET, SOCK_STREAM, 0);
  addr.sin_addr.s_addr = htonl(INADDR_ANY);
  addr.sin_family      = AF_INET;
  addr.sin_port        = htons(5555);
  common_bind(listenfd, (struct sockaddr*)&addr, sizeof(addr));
  common_listen(listenfd, 5);

  for (;;) {
    connfd = common_accept(listenfd, NULL, NULL);

    tick = time(NULL);
    snprintf(buf, sizeof(buf), "%.24s\r\n", ctime(&tick));
    common_write(connfd, buf, strlen(buf));

    common_close(connfd);
  }
  common_close(listenfd);

  network_destroy();

  return 0;
}
Ejemplo n.º 2
0
int
_user_accept(int socket, struct sockaddr *userAddress,
	socklen_t *_addressLength)
{
	// check parameters
	socklen_t addressLength = 0;
	status_t error = prepare_userland_address_result(userAddress,
		_addressLength, addressLength, false);
	if (error != B_OK)
		return error;

	// accept()
	SyscallRestartWrapper<int> result;

	char address[MAX_SOCKET_ADDRESS_LENGTH];
	socklen_t userAddressBufferSize = addressLength;
	result = common_accept(socket,
		userAddress != NULL ? (sockaddr*)address : NULL, &addressLength, false);

	// copy address size and address back to userland
	if (copy_address_to_userland(address, addressLength, userAddress,
			userAddressBufferSize, _addressLength) != B_OK) {
		_user_close(result);
		return B_BAD_ADDRESS;
	}

	return result;
}
Ejemplo n.º 3
0
int main(int argc, char* argv[]) {
  int listenfd;
  int clientfd;
  struct sockaddr_in addr;
  socklen_t addrlen;

  network_init();

  listenfd = common_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  addr.sin_addr.s_addr = htonl(INADDR_ANY);
  addr.sin_family      = AF_INET;
  addr.sin_port        = htons(5555);
  common_bind(listenfd, (struct sockaddr*)&addr, sizeof(addr));
  common_listen(listenfd, SOMAXCONN);

  printf("echo server start sucess !!!\n");
  for (;;) {
    addrlen = sizeof(addr);
    clientfd = common_accept(listenfd, (struct sockaddr*)&addr, &addrlen);

    CreateThread(NULL, 0, echo_process, &clientfd, 0, NULL);
  }
  common_close(listenfd);

  network_destroy();

  return 0;
}
Ejemplo n.º 4
0
int
accept(int socket, struct sockaddr *address, socklen_t *_addressLength)
{
	SyscallFlagUnsetter _;
	RETURN_AND_SET_ERRNO(common_accept(socket, address, _addressLength, true));
}