linux – 如何判断TCP端口是否打开?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何判断TCP端口是否打开?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2198字,纯文字阅读大概需要4分钟。
内容图文
![linux – 如何判断TCP端口是否打开?](/upload/InfoBanner/zyjiaocheng/959/abcd93369e2e493eb7a7df817e9bdb9e.jpg)
我试图在C中实现套接字编程.
当我尝试从客户端连接到服务器(Ubuntu)时,它显示“连接失败”之类的错误.
所以我认为问题在于端口问题.我使用5454 / tcp端口进行套接字编程.
我如何知道5454端口是否正在侦听?
如果不是,那么哪些端口可用于在Ubuntu中使用C进行TCP套接字编程?这是仅端口的问题还是我的代码有什么问题或者LINUX Ubuntu中是否需要任何设置?
编辑:
代码片段:
int socket_send;
struct sockaddr_in address;
printf("\n Initialization Socket....");
socket_send = socket(AF_INET,SOCK_STREAM,0);
if(socket_send == -1)
{
perror("\n Socket not created.Error:");
return 1;
}
printf("\n Socket created");
address.sin_family=AF_INET;
address.sin_addr.s_addr=inet_addr(ip);
address.sin_port=htons(5454);
if(connect(socket_send,(struct sockaddr*)&address,sizeof(struct sockaddr))<0)
{
perror("\nConnetion failed.Error:");
return 1;
}
printf("\n Connected");
if(send(socket_send,(char*)buffer,size,flag)<0)
{
perror("\nSending failed.Error:");
return 1;
}
printf("\n Data successfully sent");
close(socket_send);
编辑:
问题在于端口,所以我只是重新安装了Ubuntu,它正在运行.
谢谢大家.
解决方法:
由于你是用C编程的,我想发布一个小片段,告诉你端口是否打开,我编程输出一个字符串.您可以轻松更改它以满足您的需求.
回答你的第二个问题,就像这里的每个人所说,如果你是系统上的超级用户(root),如果任何其他应用程序没有使用该端口,你几乎可以使用任何端口.如果您不是root用户,则可以打开1024以上的任何端口.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main(int argc, char *argv[])
{
int portno = 5454;
char *hostname = "192.168.56.101";
int sockfd;
struct sockaddr_in serv_addr;
struct hostent *server;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
error("ERROR opening socket");
}
server = gethostbyname(hostname);
if (server == NULL) {
fprintf(stderr,"ERROR, no such host\n");
exit(0);
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,
(char *)&serv_addr.sin_addr.s_addr,
server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) {
printf("Port is closed");
} else {
printf("Port is active");
}
close(sockfd);
return 0;
}
内容总结
以上是互联网集市为您收集整理的linux – 如何判断TCP端口是否打开?全部内容,希望文章能够帮你解决linux – 如何判断TCP端口是否打开?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。