Tôi vừa mới bắt đầu học những điều cơ bản về ổ cắm (Linux). Tôi đã thử dùng một ví dụ nhỏ, nhưng nó không hoạt động và tôi không biết có gì sai.Lỗi ổ cắm: kết nối bị từ chối - tôi đang làm gì sai?
Tôi nhận được thông báo lỗi "Đã kết nối bị từ chối".
Dưới đây là mã của tôi:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main() {
int c;
c = socket(AF_INET, SOCK_STREAM, 0);
if (c < 0) {
printf("Error in creating socket! %s\n", strerror(errno));
return 1;
}
struct sockaddr_in server;
memset(&server, 0, sizeof(server));
server.sin_port = htons(1234);
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1"); //local host
if (connect(c, (struct sockaddr *)&server, sizeof(server)) < 0) {
// Here is my error
printf("Error when connecting! %s\n",strerror(errno));
return 1;
}
while(1) {
char msg[100];
printf("Give message: ");
fgets(msg, sizeof(msg), stdin);
send(c, &msg, sizeof(msg), 0);
char resp[100];
recv(c, &resp, sizeof(resp), 0);
printf("Received: %s\n", resp);
}
close(c);
}
EDIT
Dĩ nhiên! lỗi thực sự nằm trong máy chủ. Tôi đơn giản thấy rằng chúng tôi đã mệt mỏi vì khách hàng đã gửi tin nhắn, vì vậy tôi đã thu hẹp tầm nhìn của mình, thậm chí không hề lo lắng khi nhìn lại máy chủ.
Kể từ khi lỗi có vẻ là cũng trong máy chủ của tôi, tôi có thể kết thúc hỏi một câu hỏi khác và liên kết nó ở đây
Server đã được nghe (12345) ...
Bạn có viết chương trình nghe trên cổng 1234 không? Hãy thử thực hiện nc -l 127.0.0.1 1234 trước để có một người nghe. – fuz