|

楼主 |
发表于 2004-4-8 23:12:05
|
显示全部楼层
修改后的code
- //client.c
- #include <stdio.h>
- #include <sys/socket.h>
- #include <errno.h>
- #include <netinet/in.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <stdlib.h>
- #define LISTENQ 5
- #define BUFSIZE 1024
- //void str_echo(int);
-
- int
- main(int argc, char **argv)
- {
- int listenfd, connfd;
- int len;
- struct sockaddr_in servaddr, cliaddr;
- char buf[BUFSIZE];
- char hello[]="Hello!\n";
-
- if((listenfd = socket(AF_INET, SOCK_STREAM, 0))<0)
- perror("socket error");
- bzero(&servaddr, sizeof(servaddr));
- servaddr.sin_family=AF_INET;
- servaddr.sin_port =htons(1234);
- servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
- if(bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr))<0)
- {
- perror("bind");
- exit(1);
- }
- if(listen(listenfd, LISTENQ)<0)
- {
- perror("listen");
- exit(1);
- }
- for ( ; ; ){
- len = sizeof(cliaddr);
- connfd=accept(listenfd, (struct sockaddr *)&cliaddr, &len);
- if (connfd<0)
- {
- perror("accept");
- exit(1);
- }
- if(write(listenfd, hello, strlen(hello))<0)
- {
- perror("write");
- exit(1);
- }
- close(connfd);
- }
- close(listenfd);
- exit(0);
- }
- // client.c
- #include <stdio.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <errno.h>
- #include <netdb.h>
- #include <unistd.h>
- #define BUFSIZE 1024
- int
- main(int argc, char **argv)
- {
- int sockfd, n;
- struct sockaddr_in servaddr;
- char buf[1024];
- struct hostent *host;
-
- if (argc <2){
- printf("usage: %s <server> <data1>...<dataN)\n",argv[0]);
- exit(1);
- }
- if ((host=gethostbyname(argv[1]))==NULL)
- {
- perror("gethostbyname");
- exit(1);
- }
- if (sockfd=socket(AF_INET, SOCK_STREAM, 0)<0)
- {
- perror("socket error");
- exit(1);
- }
- bzero(&servaddr, sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_port = htons(1234);
- servaddr.sin_addr = *((struct in_addr*)host->h_addr);
- // servaddr.sin_addr.s_addr=((struct in_addr *)host->h_addr);
- // inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
-
- if(connect(sockfd,(struct sockaddr *) &servaddr, sizeof(servaddr))<0) {
- perror("connect");
- exit(1);
- }
- if (n=read(sockfd, buf, BUFSIZE)<0)
- {
- perror("read");
- exit(1);
- }
- printf("I have received: %s\n", buf);
- close(sockfd);
- exit(0);
- }
- all : server client
- server : server.c
- gcc $^ -o $@
- client : client.c
- gcc $^ -o $@
- telnet information :
- /* Trying 127.0.0.1...
- Connected to 127.0.0.1.
- Escape character is '^]'.
- Connection closed by foreign host.
- [1]+ Broken pipe ./server
- */
复制代码
我的意图就是连上server后,把hello送给client,打印出来,
改了有改,还是原来的错误,实在不知道错在什么地方,
我连telnet后的内容都贴上来,实在不明白啊,又要麻烦兄弟们了 |
|