Math Dash 2022-03-02 15:41 采纳率: 92.8%
浏览 110
已结题

C语言网络编程,如何更改自己编的程序的本地ip?

我的ip地址只能在内部使用

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <winsock2.h>
main()
{
    WSADATA wsaData;
    int err=WSAStartup(MAKEWORD(2,2),&wsaData);
    SOCKET sock=socket(AF_INET,SOCK_STREAM,0);//*初始化
    struct sockaddr_in serv_addr2;
    serv_addr2.sin_family=2;//*IPv4地址
    serv_addr2.sin_addr.s_addr=inet_addr("192.168.2.2");//*ip
    serv_addr2.sin_port=htons(2305);//*端口号
    bind(sock,(struct sockaddr*)&serv_addr2,sizeof(serv_addr2));
    int f=listen(sock,200);//*监听
    int len=sizeof(struct sockaddr_in);
    SOCKADDR clntaddr;
    SOCKET data;
    data=accept(sock,&clntaddr,&len);//*接收请求
    char *data2;
    data2=(char*)malloc(sizeof(char)*1024*1024);
    unsigned long long int length=0;
    while(length<1024*1024)
    {
        data2[length]='a';
        length++;
    }
    data2[length]='\0';
    int j;
    send(data,data2,1024*1024,0);//*发送信息
    closesocket(sock);
    closesocket(data);
    free(data2);
    //*关闭套接字 
    WSACleanup();
    system("pause");
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <winsock2.h>
main()
{
    char ip[30];
    WSADATA wsaData;
    int err=WSAStartup(MAKEWORD(1,0),&wsaData);
    SOCKET sock=socket(AF_INET,SOCK_STREAM,0);//*初始化
    struct sockaddr_in serv_addr;
    serv_addr.sin_family=AF_INET;//*IPv4地址 
    serv_addr.sin_addr.s_addr=inet_addr("192.168.2.2");//*ip
    serv_addr.sin_port=htons(2305);//*端口号
    connect(sock,(SOCKADDR*)&serv_addr,sizeof(serv_addr));
    system("pause");
//   listen(sock,200);
    char *data;
    data=(char*)malloc(sizeof(char)*1024*1024);
    data[1024*1024]='\0';
    int j;
    recv(sock,data,1024*1024,0);
    printf("%s",data);
    free(data);
    closesocket(sock);//*关闭套接字 
    WSACleanup();
    system("pause");
    return 0;
}

应该怎么修改ip,才能在保证网络正常通信的同时又能将信息通过自己编的程序发送到互联网?

  • 写回答

1条回答 默认 最新

  • yun6853992 2022-03-02 15:49
    关注

    可以用这个表示:INADDR_ANY,服务器端用着个,也就是你服务器72行的代码改成(我记得0.0.0.0也可以,你试试)
    serv_addr2.sin_addr.s_addr = htonl(INADDR_ANY);
    然后客户端连接的时候,你就查一下服务器的ip,然后填入就好

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月10日
  • 已采纳回答 3月2日
  • 修改了问题 3月2日
  • 创建了问题 3月2日

悬赏问题

  • ¥66 定制开发肯德基自动化网站下单软件
  • ¥20 vscode虚拟环境依赖包未安装
  • ¥15 odoo17关于owl开发js代码问题
  • ¥15 光纤中多普勒频移公式的推导
  • ¥15 怎么制作一个人脸识别门禁系统
  • ¥20 大华dss监控平台网络关闭登不进去
  • ¥15 请使用蚁群算法解决下列问题,并给出我完整的代码
  • ¥20 关于php录入完成后,批量更新数据库
  • ¥15 请教往复密封润滑问题
  • ¥15 cocos creator发布ios包