コード例 #1
0
ファイル: uv_udp.cpp プロジェクト: RickySu/hhvm-ext-uv
    static int64_t HHVM_METHOD(UVUdp, getSockport) {
        auto* data = Native::data<UVUdpData>(this_);
        struct sockaddr addr;
        int addrlen;

        if(data->udp_handle->sockPort == 0){
            addrlen = sizeof addr;
            if(uv_udp_getsockname(data->udp_handle, &addr, &addrlen)){
                return -1;
            }
            data->udp_handle->sockAddr = sock_addr(&addr);
            data->udp_handle->sockPort = sock_port(&addr);
        }
        
        return data->udp_handle->sockPort;
    }    
コード例 #2
0
ファイル: sckname.c プロジェクト: erich0929/programming
/*
 * Main Program :
 */
int
main(int argc,char **argv,char **envp) {
    int z;           /* Status return code */
    int sck_inet;               /* Socket  */
    struct sockaddr_in adr_inet;/* AF_INET */
    int len_inet;               /* length  */
    char buf[64];           /* Work buffer */

    /*
     * Create an IPv4 Internet Socket:
     */
    sck_inet = socket(AF_INET,SOCK_STREAM,0);

    if ( sck_inet == -1 )
        bail("socket()");

    /*
     * Create an AF_INET address:
     */
    memset(&adr_inet,0,sizeof adr_inet);
    adr_inet.sin_family = AF_INET;
    adr_inet.sin_port = htons(9000);
    inet_aton("127.0.0.24",&adr_inet.sin_addr);
    len_inet = sizeof adr_inet;

    /*
     * Now bind the address to the socket:
     */
    z = bind(sck_inet,
        (struct sockaddr *)&adr_inet,
        len_inet);
    if ( z == -1 )
        bail("bind()");

    /*
     * Now test our sock_addr() function :
     */
    if ( !sock_addr(sck_inet,buf,sizeof buf) )
        bail("sock_addr()");

    printf("Address is '%s'\n",buf);

    close(sck_inet);
    return 0;
}
コード例 #3
0
ファイル: uv_udp.cpp プロジェクト: RickySu/hhvm-ext-uv
 static void send_cb(uv_udp_send_t* sr, int status) {
     send_req_t *req = (send_req_t *) sr;
     uv_udp_ext_t *udp_handle = (uv_udp_ext_t *) req->handle;
     auto* data = Native::data<UVUdpData>(udp_handle->udp_object_data);
     auto callback = data->sendCallback;
     if(!callback.isNull()){
         vm_call_user_func(callback, 
             make_packed_array(
                 udp_handle->udp_object_data,
                 sock_addr((struct sockaddr *) &req->addr),
                 sock_port((struct sockaddr *) &req->addr),
                 status
             )
         );        
     }
     delete req->buf.base;
     delete req;
 }
コード例 #4
0
ファイル: server.c プロジェクト: sstefani/mtrace-old
static void create_socket(void)
{
	struct sock_descr descr;

	if (sock_addr(sock_path, &descr) < 0)
		fatal("can't open socket path: %s\n", sock_path);

	sock_fd = socket(descr.domain, SOCK_STREAM, descr.proto);
	if (sock_fd < 0)
		fatal("socket (%s)", strerror(errno));

	if (setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_1, sizeof(const_int_1)))
		fatal("setsockopt (%s)", strerror(errno));

	if (bind(sock_fd, (struct sockaddr *)&descr.addr, descr.addrlen) < 0)
		fatal("bind (%s)", strerror(errno));

	if (listen(sock_fd, 1) < 0)
		fatal("listen (%s)", strerror(errno));
}
コード例 #5
0
ファイル: uv_udp.cpp プロジェクト: RickySu/hhvm-ext-uv
 static void recv_cb(uv_udp_ext_t* udp_handle, ssize_t nread, const uv_buf_t* buf, const struct sockaddr* addr, unsigned int flags) {
     auto* data = Native::data<UVUdpData>(udp_handle->udp_object_data);
     auto recvCallback = data->recvCallback;
     auto errorCallback = data->errorCallback;
     if(nread > 0){
         if(!recvCallback.isNull()){
             vm_call_user_func(recvCallback, 
                 make_packed_array(
                     udp_handle->udp_object_data,
                     sock_addr((struct sockaddr *) addr),
                     sock_port((struct sockaddr *) addr),
                     String(buf->base, nread, CopyString),
                     (int64_t) flags
                 )
             );
         }
     }
     else{
         if(!errorCallback.isNull()){
             vm_call_user_func(errorCallback, make_packed_array(udp_handle->udp_object_data, nread, (int64_t) flags));
         }
     }
     delete buf->base;
 }
コード例 #6
0
ファイル: ServerApp.cpp プロジェクト: luozhishen/gameengine
	void CServerApp::SetRPCAddrPort(_U32 ip, _U16 port)
	{
		sock_addr(&m_saRPC, ip, port);
	}
コード例 #7
0
ファイル: ServerApp.cpp プロジェクト: luozhishen/gameengine
	CServerApp::CServerApp(_U32 nIOThreadCount)
	{
		m_hIOWorkers = CreateWorkers(nIOThreadCount);
		sock_addr(&m_saRPC, 0, 0);
		sock_addr(&m_saListen, 0, 0);
	}