我剛剛開始在c網絡編程。我遵循一個簡單的教程來創建一個接受連接並打印出客戶端發送的消息的服務器。伯克利插座,運行簡單的客戶端和服務器連接
客戶端接受一個參數作爲服務器的地址。
我不知道如何指定服務器的地址?這是我的機器名嗎?
我在一個終端上運行服務器,並嘗試從另一個終端連接。在這裏感謝所有幫助:)
是在打印字符串的結尾服務器代碼
`#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include<stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
#define BUFLEN 1500
int fd;
ssize_t i;
ssize_t rcount;
char buf[BUFLEN];
printf("test1");
fd = socket (AF_INET,SOCK_STREAM,0);
if (fd == -1){
printf("Oh dear, something went wrong with read()! %s\n", strerror(errno));
}
struct sockaddr_in addr;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_family = AF_INET;
addr.sin_port = htons(500);
if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
printf("cannot bind socket");
}
if (listen(fd, 20) == -1) {
printf("unable to listen");
}
int connfd;
struct sockaddr_in cliaddr;
socklen_t cliaddrlen = sizeof(cliaddr);
connfd = accept(fd, (struct sockaddr *) &cliaddr, &cliaddrlen);
if (connfd == -1) {
printf("unable to accept");
}
rcount = read(fd, buf, BUFLEN);
if (rcount == -1) {
// Error has occurred
}
for (i = 0; i < rcount; i++) {
printf("%c", buf[i]);
}
}`
你有沒有試過「localhost」? – iabdalkader 2012-02-10 02:26:14
噢!這就是我認爲,我得到的連接被拒絕,但這可能是另一個問題 – drunkmonkey 2012-02-10 02:45:28
它可能是相同的,你可以發佈相關的服務器代碼? – iabdalkader 2012-02-10 02:53:42