#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int main(int argc, char *argv[]){
int sockfd;
struct sockaddr_in serv_addr;
struct hostent *hp;
char buff[100];
//Create socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0){
perror("Failed to create socket!");
exit(1);
}
serv_addr.sin_family = AF_INET;
hp = gethostbyname(argv[1]); *
我认为错误可能在上面一行,但我不知道如何解决这个问题。
当我在 Linux 的 Geany 中编译、构建和运行此代码时,我收到一条分段错误错误消息。为什么会这样,我该如何解决?
我认为你的问题出在这里
hp = gethostbyname(argv[1]);
你应该在控制台上发送一些东西作为参数,否则这个空间 (argv[1]) 是无效的,因此会发生分段错误。
在您的情况下,参数应该是您尝试连接的计算机的名称。例如:
./program hosToConnectTo
应该做的伎俩。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句