Esempio n. 1
0
/*
-- FUNCTION: initializeServer
--
-- DATE: September 23, 2011
--
-- REVISIONS:
--
-- DESIGNER: Karl Castillo
--
-- PROGRAMMER: Karl Castillo
--
-- INTERFACE: void initalizeServer(int* port, int* socket)
--				port - the port the client will listen on
--				socket - the socket that will hold the new socket
--
-- RETURNS: void
--
-- NOTES:
-- This function will create the socket, set reuse and listen for any incoming
-- connections from the server.
*/
void initalizeServer(int* port, int* socket)
{
    int sock = 0;

    // Create a TCP socket
    if ((sock = tcpSocket()) == -1) {
        systemFatal("Cannot Create Socket!");
    }
    
    // Allow the socket to be reused immediately after exit
    if (setReuse(&sock) == -1) {
        systemFatal("Cannot Set Socket To Reuse");
    }
    
    // Bind an address to the socket
    if (bindAddress(port, &sock) == -1) {
        systemFatal("Cannot Bind Address To Socket");
    }
    
    // Set the socket to listen for connections
    if (setListen(&sock) == -1) {
        systemFatal("Cannot Listen On Socket");
    }
    
    if((*socket = acceptConnection(&sock)) == -1) {
    	systemFatal("Cannot Accept on Socket");
    }
    close(sock);
}
Esempio n. 2
0
/*
-- FUNCTION: initializeServer
--
-- DATE: March 12, 2011
--
-- REVISIONS: September 22, 2011 - Added some extra comments about failure and
-- a function call to set the socket into non blocking mode.
--
-- DESIGNER: Luke Queenan
--
-- PROGRAMMER: Luke Queenan
--
-- INTERFACE: void initializeServer(int *listenSocket, int *port);
--
-- RETURNS: void
--
-- NOTES:
-- This function sets up the required server connections, such as creating a
-- socket, setting the socket to reuse mode, binding it to an address, and
-- setting it to listen. If an error occurs, the function calls "systemFatal"
-- with an error message.
*/
void initializeServer(int *listenSocket, int *port)
{
    // Create a TCP socket
    if ((*listenSocket = tcpSocket()) == -1)
    {
        systemFatal("Cannot Create Socket!");
    }
    
    // Allow the socket to be reused immediately after exit
    if (setReuse(&(*listenSocket)) == -1)
    {
        systemFatal("Cannot Set Socket To Reuse");
    }
    
    // Bind an address to the socket
    if (bindAddress(&(*port), &(*listenSocket)) == -1)
    {
        systemFatal("Cannot Bind Address To Socket");
    }
    
    // Set the socket to listen for connections
    if (setListen(&(*listenSocket)) == -1)
    {
        systemFatal("Cannot Listen On Socket");
    }
}
Esempio n. 3
0
bool ProtocolTCPServer::init_derived()
{
	if (!initbase())
		return false;

	if (!setListen(backlog))  {
		HAGGLE_ERR("Could not set listen mode on socket\n");
        }
	return true;
}
Esempio n. 4
0
bool ProtocolRFCOMMServer::init_derived()
{
	if (!initbase())
		return false;
	
	if (!setListen(backlog)) {
		closeSocket();
		HAGGLE_ERR("Could not set socket to listening mode\n");
		return false;
        }
	return true;
}
Esempio n. 5
0
/**
 * @brief 关闭设备
 */
BOOL USBControl::closeDevice()
 {	
	//先清空,也方便唤醒满的情况
	Global::S_CCycleBuffer->clearBuffer();
	//先停止监听
	setListen(USBThread::STOP_TAG);
	//退出run函数
	usbThread->quit();
	if (usbThread->isRunning())
	{

		usbThread->wait();
	}
	
	//关闭USB设备
	return CloseHandle(m_hDevice);
 }
Esempio n. 6
0
Server::Server(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Server)
{
    ui->setupUi(this);

    QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();
    ui->lineEditIP->setText(ipAddressesList.at(0).toString());
    ui->lineEditPort->setValidator(new QIntValidator(1, 65535, this));

    tcpServer = new QTcpServer(this);

    QObject::connect(tcpServer, SIGNAL(newConnection()), this, SLOT(acceptConnection()));
    QObject::connect(ui->pushButtonClear, SIGNAL(clicked()), this, SLOT(clearText()));
    QObject::connect(ui->pushButtonSend, SIGNAL(clicked()), this, SLOT(sendClient()));
    QObject::connect(ui->pushButtonQuit, SIGNAL(clicked()), this, SLOT(close()));
    QObject::connect(ui->pushButtonListen, SIGNAL(clicked()), this, SLOT(setListen()));
}
Esempio n. 7
0
TCPServerSocket::TCPServerSocket(const std::string &localAddress, 
    unsigned short localPort, int queueLen): Socket(SOCK_STREAM, IPPROTO_TCP) {
  setLocalAddressAndPort(localAddress, localPort);
  setListen(queueLen);
}
Esempio n. 8
0
TCPServerSocket::TCPServerSocket(unsigned short localPort, int queueLen): Socket(SOCK_STREAM, IPPROTO_TCP) {
  setLocalPort(localPort);
  setListen(queueLen);
}
Esempio n. 9
0
void main(void){
	WSADATA wsaData;
	SOCKET listeningSocket;
	SOCKET newConnection;
	struct sockaddr_in serverAddr, tempAddr;
	struct sockaddr_storage clientAddr;
	int clientAddrLen;
	int port = 5150;
	int returnValue, tempAddrLen;
	char dataBuffer[666], ansiBuffer[666];

	// Инициализация Winsock версии 2.2
	if ((returnValue = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0){
		myprintf("WSAStartup ошибка %s\n", encodeWSAGetLastError(returnValue));
		return;
	}
	///////////////////////////////////////////////////////////////////////////////////////////////////
	// Создаём новый TCP сокет для приёма запросов на соединение от клиентов.
	listeningSocket = getSocket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

	// Заполняем   struct sockaddr_in serverAddr, которая скажет функции bind, что мы хотим
	// слушать соединения на всех интерфейсах (INADDR_ANY), используя порт 5150. 
	// Мы преобразуем порядок байт  из системного в сетевой (htons и htonl)
	serverAddr.sin_family = AF_INET;
	serverAddr.sin_port = htons(port);
	serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);

	// bind привязывает адресную информацию, определённую  в serverAddr к сокету  listeningSocket
	bindSocket(listeningSocket, serverAddr);

	// Сокет пасивный для прослушивания (приёма) TCP соединений. Длина очереди запросов на соединение = 5
	setListen(listeningSocket, 5);
	tempAddrLen = sizeof(tempAddr);
	
	getsockname(listeningSocket, (struct sockaddr *)&tempAddr, &tempAddrLen);
	myprintf("Локальный адрес:%s и порт:%d \n", inet_ntoa(tempAddr.sin_addr), ntohs(tempAddr.sin_port));
	tempAddrLen = sizeof(tempAddr);
	getpeername(listeningSocket, (struct sockaddr *)&tempAddr, &tempAddrLen);
	myprintf("Удалённый адрес:%s и порт:%d \n", inet_ntoa(tempAddr.sin_addr), ntohs(tempAddr.sin_port));

	myprintf("Ожидаем соединение на порту %d.\n", port);
	// Принимаеи новое соединение, когда оно возникнет
	clientAddrLen = sizeof(clientAddr);
	clientAddr.__ss_align = 0;
	newConnection = accepting(listeningSocket, &clientAddr, clientAddrLen);
	
	getsockname(newConnection, (struct sockaddr *)&tempAddr, &tempAddrLen);
	myprintf("Локальный адрес:%s и порт:%d сокета сервера\n", inet_ntoa(tempAddr.sin_addr), ntohs(tempAddr.sin_port));
	getpeername(newConnection, (struct sockaddr *)&tempAddr, &tempAddrLen);
	myprintf("Удаленный адрес:%s и порт:%d сокета клиента\n", inet_ntoa(tempAddr.sin_addr), ntohs(tempAddr.sin_port));
	
	// Далее мы можем снова ожидать на сокете listeningSocket новые соединения снова вызывая accept
	// и/или начать передавать и принимать данные на сокете newConnection. 
	// Для простоты остановим прослушивание, закрывая сокет listeningSocket. 
	// Можно начнинать приём и предачу данных на сокете newConnection.

	closesocket(listeningSocket);

	myprintf("Ждём данные для получения..\n");
	/*if ((returnValue = recv(newConnection, dataBuffer, sizeof(dataBuffer), 0)) == SOCKET_ERROR){
		myprintf("Ошибка recv %s\n", encodeWSAGetLastError(WSAGetLastError()));
		closesocket(newConnection);
		WSACleanup();
		exit(1);
	}*/
	if ((returnValue = recv(newConnection, u1.c, sizeof(u1), 0)) == SOCKET_ERROR){
		myprintf("Ошибка recv %s\n", encodeWSAGetLastError(WSAGetLastError()));
		closesocket(newConnection);
		WSACleanup();
		exit(1);
	}
	// Делаем из полученных данных строку на С
	//dataBuffer[returnValue] = '\0';
	//OemToChar(dataBuffer, ansiBuffer);
	int offset = 0, result1=1, result2=1;
	
	printf("%e", u1.d);
		//int operationIndex = switchOperation(ansiBuffer, &offset);
	/*if (operationIndex == -1){
		myprintf("Получено %d байтов в сообщении  %s\n", returnValue, ansiBuffer);
		myprintf("\nОбратная передача сообщения...\n");
		returnValue = sendMessage(newConnection, ansiBuffer, strlen(ansiBuffer));
		myprintf("Передано %d байтов.\n", returnValue);
	}
	else{
		BOOL flagAnswer = FALSE;
		int answer = 0;
		myprintf("%s\n", ansiBuffer);
		switch (operationIndex)
		{
		case 0:
			myprintf("Принята команда <qs> на закрытие...\n");
			break;
		case 1:
			if (getNumber(ansiBuffer, offset, &result1, &result2))
				flagAnswer = TRUE;
				answer = result1 + result2;
				myprintf("%d\n", answer);
			break;
		case 2:
			if (getNumber(ansiBuffer, offset, &result1, &result2))
				flagAnswer = TRUE;
				answer = result1 - result2;
				myprintf("%d\n", answer);
			break;
		case 3:
			if (getNumber(ansiBuffer, offset, &result1, &result2))
				flagAnswer = TRUE;
				answer = result1 * result2;
				myprintf("%d\n", answer);
			break;
		case 4:
			if (getNumber(ansiBuffer, offset, &result1, &result2))
			if (result2 != 0){
				flagAnswer = TRUE;
				answer = result1 / result2;
				myprintf("%d\n", answer);
			}else myprintf("Деление на 0!\n");
			break;
		default:
			break;
		}
		if (flagAnswer){
			myprintf("\nОбратная передача сообщения...\n");
			char temp[666];
			_itoa_s(answer, temp, 666, 10);
			returnValue = sendMessage(newConnection, temp, strlen(temp));
			myprintf("Передано %d байтов.\n", returnValue);
		}
	}*/
	myprintf("Закрываем соединение с клиентом.\n");
	closesocket(newConnection);
	WSACleanup();
	system("pause");
}
void QQmlWebSocketServer::closed()
{
    setListen(false);
}
Esempio n. 11
0
TCPServerSocket::TCPServerSocket(unsigned short localPort, int queueLen) 
    throw(ClassException<Socket>) : Socket(SOCK_STREAM, IPPROTO_TCP) {
  setLocalPort(localPort);
  setListen(queueLen);
}