闪存无法正确写入套接字

时间:2015-02-17 07:41:03

标签: c sockets flash actionscript

我有一个用C编写的简单套接字服务器:

read_fds = master;
select(fdmax+1, &read_fds, NULL, NULL, &tv);

for(i = 0; i<= fdmax; i++)
{
    if (FD_ISSET(i, &read_fds))
    {
        if (i == listen_fd)  //new connection
        {
            newfd = accept(listen_fd, (struct sockaddr *) NULL, NULL);

            if (newfd != -1)
            {
                int val;
                fprintf(stderr, "New connection!");

                if(-1 == ioctl(newfd, FIONBIO, (val =1, &val)))
                {
                    fprintf(stderr, "second bad meme");
                }

                FD_SET(newfd, &master);

                if (newfd > fdmax) {
                    fdmax = newfd;
                }
            }
        } else {
            fprintf(stderr, "hello");
            nbytes = recv(i, buf, sizeof buf, 0);
            if(nbytes <= 0)
            {
                fprintf(stderr, "Dead");
                close(i);
                FD_CLR(i, &master);
            } else {
                fprintf(stderr, "%s", buf);
            }
        }
    }
}

我使用flash连接到它(我在flash中运行它,所以此时策略不应成为问题):

Security.allowInsecureDomain("*");
Security.allowDomain("*");

var socket = new XMLSocket;

socket.connect("12.34.56.78", 8080);

socket.onConnect = function(success) {
    if(success) {
        trace("connected");
        var result = socket.writeUTF("sent from client\n");
    }
}

当我启动服务器,然后启动Flash文件时,我看到&#34;新连接!&#34;在服务器上,闪存还报告它已连接。

我希望看到&#34;你好&#34;来自服务器(我的C代码中的fprintf),然后是&#34;从客户端&#34;发出。然而,没有任何事情发生。

如果我关闭flash文件,我看&#34;你好&#34;其次是&#34; Dead&#34;。所以看起来`socket.writeUTF()不起作用,或者我只是不能正确理解如何使用flash写入套接字。

我安装了数据包监视器,我可以看到闪存正在尝试向服务器的IP发送内容,但我不知道它为什么不起作用。

无论哪种方式,似乎问题都在客户端方面。我做错了什么,我该如何解决?

0 个答案:

没有答案