首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

socket编程,连接有关问题

2012-03-09 
socket编程,连接问题?在本机测试可以连接,二台电脑测试就不行了,这是为什么??服务器代码:#includeiostrea

socket编程,连接问题?
在本机测试可以连接,二台电脑测试就不行了,这是为什么??


服务器代码:

#include   <iostream>
#include   <stdlib.h>
#include   <winsock2.h>
#pragma   comment(lib,   "ws2_32.lib ")
using   namespace   std;

int   main()
{
        WORD   wVersionRequested;
        WSADATA   wsaData;
        SOCKET   sock_id,   client_id;
        struct   sockaddr_in   serv_addr,   remote_addr;
       
        wVersionRequested   =   MAKEWORD(2,   0);

        if   (0   !=   WSAStartup(wVersionRequested,   &wsaData))
        {
                cout   < <   "加载Winsock库出错! "   < <   endl;
                exit(1);
        }

        if   (-1   ==   (sock_id   =   socket(AF_INET,   SOCK_STREAM,   0)))
        {
                cout   < <   "创建套接字出错! "   < <   endl;
                exit(1);
        }

        serv_addr.sin_family   =   AF_INET;
        serv_addr.sin_port   =   htons(800);
        serv_addr.sin_addr.S_un.S_addr   =   inet_addr( "192.168.1.10 ");
        memset(&(serv_addr.sin_zero),   0,   sizeof(serv_addr.sin_zero));

        if   (SOCKET_ERROR   ==   bind(sock_id,   (struct   sockaddr   *)&serv_addr,   sizeof(struct   sockaddr)))
        {
                cout   < <   "1出错! "   < <   endl;
                exit(1);
        }

        if   (SOCKET_ERROR   ==   listen(sock_id,   5))
        {
                cout   < <   "2出错! "   < <   endl;
                exit(1);
        }
       
        int   sin_size   =   sizeof(struct   sockaddr_in);
        if   (SOCKET_ERROR   ==   (client_id   =   accept(sock_id,   (struct   sockaddr   *)&remote_addr,   &sin_size)))
        {
                cout   < <   "3出错! "   < <   endl;
                exit(1);
        }
               
        send(client_id,   "Hello   World! ",   strlen( "Hello   World! "),   0);
               
        closesocket(client_id);


       

        closesocket(sock_id);
        WSACleanup();
        return   0;
}
       


客户端代码:  

#include   <iostream>
#include   <winsock2.h>
#pragma   comment(lib,   "ws2_32.lib ")
using   namespace   std;

int   main()
{
        const   int   SIZE   =   100;
        char   temp[SIZE];
        int   recvbytes;
        WORD   wVersionRequested;
        WSADATA   wsaData;
        SOCKET   sock_id,   client_id;
        struct   sockaddr_in   serv_addr;
       
        wVersionRequested   =   MAKEWORD(2,   0);
        if   (0   !=   WSAStartup(wVersionRequested,   &wsaData))
        {
                cout   < <   "加载Winsock库出错! "   < <   endl;
                exit(1);
        }

        if   (-1   ==   (sock_id   =   socket(AF_INET,   SOCK_STREAM,   0)))
        {
                cout   < <   "出错! "   < <   endl;
                exit(1);
        }
       
        serv_addr.sin_family   =   AF_INET;
        serv_addr.sin_port   =   htons(800);
        serv_addr.sin_addr.S_un.S_addr   =   inet_addr( "192.168.1.10 ");
        memset(&(serv_addr.sin_zero),   0,   sizeof(serv_addr.sin_zero));
       
        if   (SOCKET_ERROR   ==   (client_id   =   connect(sock_id,   (struct   sockaddr   *)&serv_addr,   sizeof(struct   sockaddr))))
        {
                cout   < <   "出错! "   < <   endl;
                exit(1);
        }

               
        if   (ERROR_SUCCESS   ==   (recvbytes   =   recv(sock_id,   temp,   SIZE,   0)))
        {
                cout   < <   "接受数据出错! "   < <   endl;
                exit(1);
        }
                temp[recvbytes]   =   '\0 ';
        cout   < <   temp   < <   endl;

        closesocket(client_id);        
        closesocket(sock_id);

       


        WSACleanup();
        return   0;
}



[解决办法]
在本机测试可以连接,二台电脑测试就不行了,这是为什么??
========
看是不是防火墙阻止了
[解决办法]
我觉得也是防火墙的问题
[解决办法]
先打开800号端口
[解决办法]
procedure of Bind is omitted owing to your incaution
[解决办法]
bs是需要client和server bind的。。
[解决办法]
mark
另外我记得client是不需要绑定的,也许我记错了

热点排行
Bad Request.