Math Dash 2022-03-02 15:41 采纳率: 87.5%
浏览 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日

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试