客户端:
    WORD wVersionRequested;
    WSADATA wsaData;
    SOCKET soc_client;
    struct sockaddr_in sever_addr,client_addr;
    struct fileInfo r_fileInfo,s_fileInfo;
    int err,portNumber=21;
    int client_addr_len=sizeof(client_addr);
    unsigned long ip;
    //CIPAddressCtrl m_ip;m_ip为输入值,比喻:192.168.0.1
    m_ip.GetAddress(ip);
    wVersionRequested=MAKEWORD(2,2);
    err=WSAStartup(wVersionRequested,&wsaData);
    if(err!=0)
{
           return;
}
    soc_client=socket(AF_INET,SOCK_STREAM,0);
    client_addr.sin_family=AF_INET;
    client_addr.sin_port=htons(portNumber);
    client_addr.sin_addr.s_addr=htons(INADDR_ANY);  /* 任意网络接口 */    
err=bind(soc_client,(struct sockaddr *)&client_addr,sizeof(client_addr));
if(err!=0)
{   
AfxMessageBox("绑定不成功");
return;
}
    AfxMessageBox("绑定成功");
    sever_addr.sin_family=AF_INET;
    sever_addr.sin_port=htons(portNumber);
    //sever_addr.sin_addr.s_addr=ip;
    sever_addr.sin_addr.s_addr=inet_addr("192.168.0.2");
    err=connect(soc_client,(LPSOCKADDR)&sever_addr,sizeof(sever_addr));
if(err!=0)
{   
AfxMessageBox("链接不成功");
return;
}
AfxMessageBox("链接成功");
服务器端:
WORD wVersionRequested;
    WSADATA wsaData;
    SOCKET soc_sever,soc_client;
    struct sockaddr_in sever_addr,client_addr;
    struct fileInfo r_fileInfo,s_fileInfo;
    struct dataBuf s_buf;   //发送的文件数据块
    int err,portNumber=21;
    int client_addr_len=sizeof(client_addr);
    long lenOfFile,leftLen,curPosition;//leftLen在哪里用过
    CFile file; 
    wVersionRequested=MAKEWORD(2,2);
    err=WSAStartup(wVersionRequested,&wsaData);
    if(err!=0)
{
     return;
}
    soc_sever=socket(AF_INET,SOCK_STREAM,0);
    sever_addr.sin_family=AF_INET;
    sever_addr.sin_port=htons(portNumber);
    sever_addr.sin_addr.s_addr=htons(INADDR_ANY);  /* 任意网络接口 */    
err=bind(soc_sever,(LPSOCKADDR)&sever_addr,sizeof(sever_addr));
    if(err!=0)
{
 AfxMessageBox("绑定不成功,退出");
           return;
}
    AfxMessageBox("绑定成功");
    err=listen(soc_sever,5);//第二个参数是最大连接数
    if(err!=0)
{
     return;
}
     if(file.Open(m_filePath,CFile::modeRead)==false)
{
 AfxMessageBox("打不开文件");
 exit(0);
}
    AfxMessageBox("打开文件,开始侦听");               
请问这有什么问题,为什么链接不上,

解决方案 »

  1.   

    你的服务端怎么没有使用accept()  ???
      

  2.   

    给你参考一下:#include "stdafx.h"
    #include "winsock.h"#pragma comment(lib,"WSOCK32")static char welcome[]="Welcome to My Server!";
    int main(int argc, char* argv[])
    {
    int len;
    char buff[255];

    memset(buff,0,sizeof(buff));

    WSADATA wsdata;
    WSAStartup(0x0202,&wsdata); SOCKET ListenSocket,NewSocket;
    sockaddr_in s_in,new_s_in;
    s_in.sin_family = AF_INET;
    s_in.sin_addr.s_addr = htonl(INADDR_ANY);
    s_in.sin_port = htons(55555); ListenSocket=socket(AF_INET,SOCK_STREAM,0); if(ListenSocket==INVALID_SOCKET)
    {
    printf("\n Failed to setup socket!");
    return 0;
    } bind(ListenSocket,(struct sockaddr * )&s_in,sizeof(s_in)); listen(ListenSocket,5); printf("\n Waiting for client to connect..."); len=sizeof(new_s_in);         //用accept接收请求
    NewSocket=accept(ListenSocket,(struct sockaddr *)&new_s_in,&len);
             
    printf("\n Accepted a new client!");
    send(NewSocket,welcome,sizeof(welcome),0); shutdown(NewSocket,2); closesocket(NewSocket); return 0;
    }