コード例 #1
0
ファイル: Echo.cpp プロジェクト: sheep3652014/Echo
void Java_com_apress_echo_EchoClientActivity_nativeStartTcpClient(
		JNIEnv* env,
		jobject obj,
		jstring ip,
		jint port,
		jstring message)
{
	// Construct a new TCP socket.
	int clientSocket = NewTcpSocket(env, obj);
	if (NULL == env->ExceptionOccurred())
	{
		// Get IP address as C string
		const char* ipAddress = env->GetStringUTFChars(ip, NULL);
		if (NULL == ipAddress)
			goto exit;

		// Connect to IP address and port
		ConnectToAddress(env, obj, clientSocket, ipAddress,
				(unsigned short) port);

		// Release the IP address
		env->ReleaseStringUTFChars(ip, ipAddress);

		// If connection was successful
		if (NULL != env->ExceptionOccurred())
			goto exit;

		// Get message as C string
		const char* messageText = env->GetStringUTFChars(message, NULL);
		if (NULL == messageText)
			goto exit;

		// Get the message size
		jsize messageSize = env->GetStringUTFLength(message);

		// Send message to socket
		SendToSocket(env, obj, clientSocket, messageText, messageSize);

		// Release the message text
		env->ReleaseStringUTFChars(message, messageText);

		// If send was not successful
		if (NULL != env->ExceptionOccurred())
			goto exit;

		char buffer[MAX_BUFFER_SIZE];

		// Receive from the socket
		ReceiveFromSocket(env, obj, clientSocket, buffer, MAX_BUFFER_SIZE);
	}

exit:
	if (clientSocket > 0)
	{
		close(clientSocket);
	}
}
コード例 #2
0
ファイル: Chat.cpp プロジェクト: ejian2/PeerChat-project
JNIEXPORT void JNICALL Java_com_eric_ndkapp_ServerActivity_nativeSendServer
  (JNIEnv * env, jobject obj, jstring ip, jint port, jstring message)
{
	// Construct a new TCP socket.
	if (serverSocket == 0)
	{
		LogMessage(env, obj, "Server is not running.");
		return;
	}
	if (clientSocket == 0)
	{
		LogMessage(env, obj, "Client is not running.");
		return;
	}

	if (env->ExceptionOccurred() == NULL)
	{
		// Get IP address as C string
		const char* ipAddress = env->GetStringUTFChars(ip, NULL);

		if (NULL == ipAddress)
			goto exit;

		// Release the IP address
		env->ReleaseStringUTFChars(ip, ipAddress);

		// If connection was successful
		if (NULL != env->ExceptionOccurred())
			goto exit;

		// Get message as C string
		const char* messageText = env->GetStringUTFChars(message, NULL);
		if (NULL == messageText)
			goto exit;

		// Get the message size
		jsize messageSize = env->GetStringUTFLength(message);

		// Send message to socket
		SendToSocket(env, obj, clientSocket, messageText, messageSize);

		// Release the message text
		env->ReleaseStringUTFChars(message, messageText);

		// If send was not successful
		if (NULL != env->ExceptionOccurred())
			goto exit;

			char buffer[MAX_BUFFER_SIZE];
			// Receive from the socket
	    while (ReceiveFromSocket(env, obj, clientSocket, buffer, MAX_BUFFER_SIZE) > 0)
	    {
	    }
	}
exit:
	return;
}
コード例 #3
0
ファイル: Message.cpp プロジェクト: ueverything/mmo-resourse
long CMessage::SendToScc(long sccID)
{
	itLL it = m_SCCIDSocket.find(sccID);
	if (it!=m_SCCIDSocket.end())
	{
		SendToSocket(it->second);
	}
	return 0;
}
コード例 #4
0
ファイル: Message.cpp プロジェクト: ueverything/mmo-resourse
long CMessage::SendToAllSCC()
{
	/*itLL it =  m_SocketSCCID.begin();
	for (;it!=m_SocketSCCID.end();it++)
	{
		SendToSocket( it->first );
	}*/
	SendToSocket(m_lSccSocket);
	return 0;
}
コード例 #5
0
ファイル: gfserver.c プロジェクト: angrymonkee/IntroToOS
ssize_t gfs_sendheader(gfcontext_t *ctx, gfstatus_t status, size_t file_len)
{
    printf("Sending response header...\n");

	size_t length = file_len;

	if(status == GF_FILE_NOT_FOUND || status == GF_ERROR)
	{
		length = 0;
	}

	char *headerString = BuildHeaderString(ctx, status, length);
	SendToSocket(headerString, ctx->SocketDescriptor, strlen(headerString));
	free(headerString);

	return (ssize_t)0;
}
コード例 #6
0
void CMessage::SendToServer(NetFlag flag, bool prior)
{
    SendToSocket(GetServerSocket(flag));
}
コード例 #7
0
void CMessage::SendToGS(uint id, bool clone)
{
	int socket = GetSocketByGSID(id);
	SendToSocket(socket, clone);
}
コード例 #8
0
ファイル: gfserver.c プロジェクト: angrymonkee/IntroToOS
ssize_t gfs_send(gfcontext_t *ctx, void *data, size_t len)
{
    printf("Read %ld bytes\n", len);
	return SendToSocket(data, ctx->SocketDescriptor, len);
}
コード例 #9
0
ファイル: Echo.cpp プロジェクト: sheep3652014/Echo
void Java_com_apress_echo_LocalEchoActivity_nativeStartLocalServer(
		JNIEnv* env,
		jobject obj,
		jstring name)
{
	// Construct a new local UNIX socket.
	int serverSocket = NewLocalSocket(env, obj);
	if (NULL == env->ExceptionOccurred())
	{
		// Get name as C string
		const char* nameText = env->GetStringUTFChars(name, NULL);
		if (NULL == nameText)
			goto exit;

		// Bind socket to a port number
		BindLocalSocketToName(env, obj, serverSocket, nameText);

		// Release the name text
		env->ReleaseStringUTFChars(name, nameText);

		// If bind is failed
		if (NULL != env->ExceptionOccurred())
			goto exit;

		// Listen on socket with a backlog of 4 pending connections
		ListenOnSocket(env, obj, serverSocket, 4);
		if (NULL != env->ExceptionOccurred())
			goto exit;

		// Accept a client connection on socket
		int clientSocket = AcceptOnLocalSocket(env, obj, serverSocket);
		if (NULL != env->ExceptionOccurred())
			goto exit;

		char buffer[MAX_BUFFER_SIZE];
		ssize_t recvSize;
		ssize_t sentSize;

		// Receive and send back the data
		while (1)
		{
			// Receive from the socket
			recvSize = ReceiveFromSocket(env, obj, clientSocket,
					buffer, MAX_BUFFER_SIZE);

			if ((0 == recvSize) || (NULL != env->ExceptionOccurred()))
				break;

			// Send to the socket
			sentSize = SendToSocket(env, obj, clientSocket,
					buffer, (size_t) recvSize);

			if ((0 == sentSize) || (NULL != env->ExceptionOccurred()))
				break;
		}

		// Close the client socket
		close(clientSocket);
	}

exit:
	if (serverSocket > 0)
	{
		close(serverSocket);
	}
}
コード例 #10
0
ファイル: Echo.cpp プロジェクト: sheep3652014/Echo
void Java_com_apress_echo_EchoServerActivity_nativeStartTcpServer(
		JNIEnv* env,
		jobject obj,
		jint port)
{
	// Construct a new TCP socket.
	int serverSocket = NewTcpSocket(env, obj);
	if (NULL == env->ExceptionOccurred())
	{
		// Bind socket to a port number
		BindSocketToPort(env, obj, serverSocket, (unsigned short) port);
		if (NULL != env->ExceptionOccurred())
			goto exit;

		// If random port number is requested
		if (0 == port)
		{
			// Get the port number socket is currently binded
			GetSocketPort(env, obj, serverSocket);
			if (NULL != env->ExceptionOccurred())
				goto exit;
		}

		// Listen on socket with a backlog of 4 pending connections
		ListenOnSocket(env, obj, serverSocket, 4);
		if (NULL != env->ExceptionOccurred())
			goto exit;

		// Accept a client connection on socket
		int clientSocket = AcceptOnSocket(env, obj, serverSocket);
		if (NULL != env->ExceptionOccurred())
			goto exit;

		char buffer[MAX_BUFFER_SIZE];
		ssize_t recvSize;
		ssize_t sentSize;

		// Receive and send back the data
		while (1)
		{
			// Receive from the socket
			recvSize = ReceiveFromSocket(env, obj, clientSocket,
					buffer, MAX_BUFFER_SIZE);

			if ((0 == recvSize) || (NULL != env->ExceptionOccurred()))
				break;

			// Send to the socket
			sentSize = SendToSocket(env, obj, clientSocket,
					buffer, (size_t) recvSize);

			if ((0 == sentSize) || (NULL != env->ExceptionOccurred()))
				break;
		}

		// Close the client socket
		close(clientSocket);
	}

exit:
	if (serverSocket > 0)
	{
		close(serverSocket);
	}
}
コード例 #11
0
void Java_com_rprata_socketjni_socket_SocketResource_nativeStartLocalServer(JNIEnv* env, jobject obj, jstring name, jstring filename)
{
	// Construct a new local UNIX socket.
	int serverSocket = NewLocalSocket(env, obj);

	if (NULL == env->ExceptionOccurred())
	{
		// Get filename from String class
		const char * utf8 = env->GetStringUTFChars(filename, NULL);

	    FILE * file = fopen(utf8, "rb");
	    if (file == NULL)
	    {
	    	LOGI("Erro ao abrir o arquivo");
	    	goto exit;
	    }

	   	env->ReleaseStringUTFChars(filename, utf8);

		// Get name as C string
		const char * nameText = env->GetStringUTFChars(name, NULL);
		if (NULL == nameText)
			goto exit;

		// Bind socket to a port number
		BindLocalSocketToName(env, obj, serverSocket, nameText);

		// Release the name text
		env->ReleaseStringUTFChars(name, nameText);

		// If bind is failed
		if (NULL != env->ExceptionOccurred())
			goto exit;

		// Listen on socket with a backlog of 4 pending connections
		ListenOnSocket(env, obj, serverSocket, 4);
		if (NULL != env->ExceptionOccurred())
			goto exit;

		// Accept a client connection on socket
		int clientSocket = AcceptOnLocalSocket(env, obj, serverSocket);
		if (NULL != env->ExceptionOccurred())
			goto exit;

		char buffer[MAX_BUFFER_SIZE];
		ssize_t recvSize;
		ssize_t sentSize;

		size_t bytesRead;
		
		// Receive and send back the data
		while ((bytesRead = fread(videoBuffer, 1, BUFFER_SIZE, file)) > 0)
		{
			sentSize = SendToSocket(env, obj, clientSocket,
					videoBuffer, bytesRead);
		}

		// Close the client socket
		close(clientSocket);
	}

exit:
	if (serverSocket > 0)
	{
		close(serverSocket);
	}

}
コード例 #12
0
ファイル: echo.cpp プロジェクト: SBUNetSys/Utility-Tools
JNIEXPORT void JNICALL Java_com_example_hellojni_Native_nativeStartTcpServer
(JNIEnv *env, jobject obj, jint port) {
// Construct a new TCP socket.
    int serverSocket = NewTcpSocket(env, obj);
    if (NULL == env->ExceptionOccurred())
    {
        // Bind socket to a port number
        BindSocketToPort(env, obj, serverSocket, (unsigned short) port);
        if (NULL != env->ExceptionOccurred())
            goto exit;

        // If random port number is requested
        if (0 == port)
        {
            // Get the port number socket is currently binded
            GetSocketPort(env, obj, serverSocket);
            if (NULL != env->ExceptionOccurred())
                goto exit;
        }

        // Listen on socket with a backlog of 4 pending connections
        ListenOnSocket(env, obj, serverSocket, 4);
        if (NULL != env->ExceptionOccurred())
            goto exit;

        // Accept a client connection on socket
        int clientSocket = AcceptOnSocket(env, obj, serverSocket);
        if (NULL != env->ExceptionOccurred())
            goto exit;

        char buffer[MAX_BUFFER_SIZE];
        ssize_t recvSize;
        ssize_t sentSize;

        // Receive and send back the data
        while (1)
        {
            // Receive from the socket
            recvSize = ReceiveFromSocket(env, obj, clientSocket,
                                         buffer, MAX_BUFFER_SIZE);

            if ((0 == recvSize) || (NULL != env->ExceptionOccurred()))
                break;

            // Send to the socket
            char prefix[] = "Server: ";
            char toSend[MAX_BUFFER_SIZE + strlen(prefix)];
            strcpy(toSend, prefix);
            strcat(toSend, buffer);
            sentSize = SendToSocket(env, obj, clientSocket,
                                    toSend, (size_t) strlen(toSend));
            if ((0 == sentSize) || (NULL != env->ExceptionOccurred()))
                break;
        }

        // Close the client socket
        close(clientSocket);
    }

exit:
    if (serverSocket > 0)
    {
        close(serverSocket);
    }
}
コード例 #13
0
ファイル: message.cpp プロジェクト: ueverything/mmo-resourse
long CMessage::Send()
{
	SendToSocket( CPeerManager::getSingleton().GetWSID() );
	return 0;
}
コード例 #14
0
ファイル: Chat.cpp プロジェクト: ejian2/PeerChat-project
JNIEXPORT void JNICALL Java_com_eric_ndkapp_ServerActivity_nativeStartServer
  (JNIEnv * env, jobject obj, jstring ip, jint port, jstring message)
{
	// Construct a new TCP socket.
	if (serverSocket > 0)
	{
		LogMessage(env, obj, "Server is running");
		return;
	}

	serverSocket = NewTcpSocket(env, obj);
	if (NULL == env->ExceptionOccurred())
	{
		// Get IP address as C string
		const char* ipAddress = env->GetStringUTFChars(ip, NULL);
		if (NULL == ipAddress)
			goto exit;

		// Bind socket to a port number
		BindSocketToPort(env, obj, serverSocket, ipAddress, (unsigned short) port);

		// Release the IP address
		env->ReleaseStringUTFChars(ip, ipAddress);

		if (NULL != env->ExceptionOccurred())
			goto exit;

		// Listen on socket with a backlog of 4 pending connections
		ListenOnSocket(env, obj, serverSocket, 4);
		if (NULL != env->ExceptionOccurred())
			goto exit;

		// Accept a client connection on socket
		int socket = 0;

		if (clientSocket == 0)
		{
			clientSocket = AcceptOnSocket(env, obj, serverSocket);
		}

		if (env->ExceptionOccurred() == NULL)
		{
			// Receive and send back the data
			char buffer[MAX_BUFFER_SIZE];
			ssize_t recvSize;
			ssize_t sentSize;

			// Get message as C string
			const char* messageText = env->GetStringUTFChars(message, NULL);
			if (NULL == messageText)
				goto exit;

			// Get the message size
			jsize messageSize = env->GetStringUTFLength(message);

			// Send to the socket
			sentSize = SendToSocket(env, obj, clientSocket, messageText, messageSize);

			// Release the message text
			env->ReleaseStringUTFChars(message, messageText);

			while ((recvSize = ReceiveFromSocket(env, obj, clientSocket, buffer, MAX_BUFFER_SIZE)) > 0)
			{
			}
		}
	}

exit:
	return;
}
コード例 #15
0
ファイル: Message.cpp プロジェクト: ueverything/mmo-resourse
// //发送到Gameserver的Socket
long CMessage:: SendGSID(long lGSID)
{
	long lSocket = GetSocketBySCCID(lGSID);
	SendToSocket(lSocket);
	return true;
}
コード例 #16
0
ファイル: Message.cpp プロジェクト: ueverything/mmo-resourse
// //发送到GS,DBS的Socket
long CMessage:: SendGSID(long lGSID,bool bClone)
{
	long lSocket = GetSocketByGSID(lGSID);
	SendToSocket(lSocket,bClone);
	return true;
}