代碼: 選擇全部
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#define SERVER_IP "192.168.1.200"
#define SERVER_PORT 9876
int main(void) {
int bytes;
int server_fd, client_fd;
int server_len, client_len;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
char buffer[255];
server_fd = socket(AF_INET, SOCK_STREAM, 0);
if(server_fd<0) {
perror("Can not create Socket");
_exit(1);
}
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
inet_aton(SERVER_IP,&server_addr.sin_addr);
bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr));
listen(server_fd, 5);
while(1) {
printf("server ready\n");
client_len = sizeof(client_addr);
client_fd = accept(server_fd,
(struct sockaddr *)&client_addr, &client_len);
while((bytes=read(client_fd, buffer, 255))>0) {
buffer[bytes]=(char)NULL;
printf(buffer);
}
close(client_fd);
}
_exit(0);
}請問為什麼會這樣呢?我確定 OS X 可以用 Socket 的方式建立網路連線,我使用同樣來源的 Client 端程式在 Mac 上跑,連到 Linux Server,就可以動作。難道 OS X 的 Socket Listen 都要經過系統 API 登記之後才允許開放?
搞不懂...
