【发布时间】:2010-04-07 04:23:34
【问题描述】:
我正在编写一个程序来检查一个端口是否在 C 中打开。特别是一行将其中一个参数复制到一个 char 数组。但是,当我尝试编译时,它说:
错误:不兼容的类型 作业
这是代码。错误在addr的分配上
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv) {
u_short port; /* user specified port number */
char addr[1023]; /* will be a copy of the address entered by u */
struct sockaddr_in address; /* the libc network address data structure */
short int sock = -1; /* file descriptor for the network socket */
port = atoi(argv[1]);
addr = strncpy(addr, argv[2], 1023);
bzero((char *)&address, sizeof(address)); /* init addr struct */
address.sin_addr.s_addr = inet_addr(addr); /* assign the address */
address.sin_port = htons(port); /* translate int2port num */
sock = socket(AF_INET, SOCK_STREAM, 0);
if (connect(sock,(struct sockaddr *)&address,sizeof(address)) == 0) {
printf("%i is open\n", port);
}
if (errno == 113) {
fprintf(stderr, "Port not open!\n");
}
close(sock);
return 0;
}
我是 C 新手,所以我不确定它为什么会这样做。
【问题讨论】:
标签: c