Network programming 是否使用FreePascal或其他语言绑定/连接到网络接口卡?

Network programming 是否使用FreePascal或其他语言绑定/连接到网络接口卡?,network-programming,freepascal,lazarus,Network Programming,Freepascal,Lazarus,假设我的系统上有两个不同的活动网卡(A和B),并且知道它们的网络接口信息 例如,如何使用FreePascal连接到卡?我刚刚编译并执行了它,它似乎可以工作。您只需要更改IP地址和端口,并添加更多错误检查 #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <

假设我的系统上有两个不同的活动网卡(A和B),并且知道它们的网络接口信息


例如,如何使用FreePascal连接到卡?

我刚刚编译并执行了它,它似乎可以工作。您只需要更改IP地址和端口,并添加更多错误检查

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <arpa/inet.h>

#define MY_PORT 8564
#define THEIR_PORT 8090

int main()
{
    int     sockfd;
    struct sockaddr_in myaddr;
    struct sockaddr_in theiraddr;
    int res;

    sockfd = socket(AF_INET, SOCK_STREAM, 0);

    memset(&myaddr, 0, sizeof(struct sockaddr_in));

    myaddr.sin_family = AF_INET;
    myaddr.sin_port = htons((unsigned short)MY_PORT);
    //myaddr.sin_addr = INADDR_ANY; //for any interface

    res = inet_pton(AF_INET, "127.0.0.1", &myaddr.sin_addr);

    if (1 == res)
    {
        res = bind(sockfd, (const struct sockaddr *)&myaddr, sizeof(struct sockaddr_in));

        if (0 == res)
        {
            printf("PASO-1\n");
            theiraddr.sin_family = AF_INET;
            theiraddr.sin_port = htons((unsigned short)THEIR_PORT);
            inet_pton(AF_INET, "10.0.2.78", &theiraddr.sin_addr);
            printf("PASO-2\n");
            connect(sockfd, (const struct sockaddr *)&theiraddr, sizeof(struct sockaddr_in));
        }
    }


   return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#定义我的_端口8564
#定义它们的\u端口8090
int main()
{
int-sockfd;
myaddr中的结构sockaddr_;
结构sockaddr_在其RADDR中;
国际关系;
sockfd=套接字(AF_INET,SOCK_STREAM,0);
memset(&myaddr,0,sizeof(struct sockaddr_in));
myaddr.sin_family=AF_INET;
myaddr.sin_port=htons((无符号短)MY_port);
//myaddr.sin\u addr=INADDR\u ANY;//对于任何接口
res=inet\u pton(AF\u inet,“127.0.0.1”和myaddr.sin\u addr);
如果(1==res)
{
res=bind(sockfd,(const struct sockaddr*)&myaddr,sizeof(struct sockaddr_in));
如果(0==res)
{
printf(“PASO-1\n”);
theiraddr.sin_family=AF_INET;
theiraddr.sin_port=htons((无符号短)其_port);
inet_pton(AF_inet,“10.0.2.78”和他们的raddr.sin_addr);
printf(“PASO-2\n”);
连接(sockfd,(const struct sockaddr*)&theiraddr,sizeof(struct sockaddr_in));
}
}
返回0;
}

要创建客户端应用程序还是服务器应用程序?在任何情况下,您都应该有一个像“bind”这样的函数,您将在其中指定IP地址和端口号。你能给我举个简单的例子吗。谢谢。如果我给你一个C语言的例子,它有用吗?我希望代码对你有帮助,我可以回答你的问题。如果你发现网络接口,你通常不知道IP。这个问题指定你有网络接口信息。如果你没有它,你只是发现接口。在这里,您必须找到发现它们的方法: