ฉันพยายามใช้การเขียนโปรแกรมซ็อกเก็ตใน C. เมื่อฉันพยายามเชื่อมต่อจากไคลเอนต์กับเซิร์ฟเวอร์ (Ubuntu) มันแสดงข้อผิดพลาดเช่น "การเชื่อมต่อล้มเหลว"
ดังนั้นฉันคิดว่าปัญหาอยู่ที่พอร์ต ฉันใช้พอร์ต 5454 / tcp สำหรับการเขียนโปรแกรมซ็อกเก็ต
ฉันจะรู้ได้อย่างไรว่าพอร์ต 5454 กำลังฟังหรือไม่? หากไม่เป็นเช่นนั้นพอร์ตใดบ้างที่ฉันสามารถใช้สำหรับการเขียนโปรแกรมซ็อกเก็ต TCP โดยใช้ C ใน Ubuntu นั่นเป็นปัญหากับพอร์ตเท่านั้นหรือมีอะไรผิดปกติในรหัสของฉันหรือการตั้งค่าใด ๆ ที่จำเป็นใน 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 และมันใช้งานได้ ขอบคุณทุกท่าน
lsof -i:5454
(คุณอาจต้องเรียกใช้งานด้วยผู้ใช้เดียวกันกับที่โปรแกรมเปิดพอร์ตหรือรูท)