我用 c写了个该死的程序,编译出错,各位高手帮我看看

C、C++和Java语言
回复
zhaozhy
帖子: 95
注册时间: 2006-02-05 18:11
送出感谢: 0
接收感谢: 0

我用 c写了个该死的程序,编译出错,各位高手帮我看看

#1

帖子 zhaozhy » 2008-06-16 17:01

#include<stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main (int argc ,char **argv)
{
int sockfd,n;
char recvline[1024+1];
struct sockaddr_in servaddr;
if(argc!=2)
printf("参数错误:a.out <IP address>");
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
printf("socket错误");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(13);
if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr)<0)
printf("inet_pton错误%s",argv[1]);
if(connect(sockfd,(sockaddr *) &servaddr ,sizeof(servaddr))<0)
printf("connect错误");
while ((n=read(sockfd,recvline,1024))>0){
recvline[n]=0;
if(fputs(recvline,stdout)==EOF)
printf("fputs 错误");
}
if(n<0)
printf("read错误");
exit(0);
}


zhaozhy@zhaozhy-desktop:~/code/unixcode$ gcc 1.c
1.c: 在函数 ‘main’ 中:
1.c:17: 警告: 隐式声明与内建函数 ‘bzero’ 不兼容
1.c:22: 错误: ‘sockaddr’ 未声明 (在此函数内第一次使用)
1.c:22: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
1.c:22: 错误: 所在的函数内只报告一次。)
1.c:22: 错误: expected expression before ‘)’ token
1.c:22: 错误: 提供给函数 ‘connect’ 的实参太少
1.c:31: 警告: 隐式声明与内建函数 ‘exit’ 不兼容
zhaozhy@zhaozhy-desktop:~/code/unixcode$
头像
thyme
帖子: 38
注册时间: 2007-06-16 16:36
来自: #17 city
送出感谢: 0
接收感谢: 0
联系:

#2

帖子 thyme » 2008-06-16 17:12

connect(sockfd, (struct sockaddr *) & servaddr, sizeof(servaddr))
头像
shellex
帖子: 2180
注册时间: 2007-02-18 19:33
系统: OSX
来自: lyric.im
送出感谢: 0
接收感谢: 1 次
联系:

#3

帖子 shellex » 2008-06-16 17:13

#include <bits/sockaddr.h>
#include <string.h>
...
bzero --> memset
...
connect(sock, (struct sockaddr *) &target, sizeof (struct sockaddr));
...
头像
HuntXu
论坛版主
帖子: 5778
注册时间: 2007-09-29 3:09
送出感谢: 0
接收感谢: 6 次

#4

帖子 HuntXu » 2008-06-16 17:33

mark~

有空要研究socket...
HUNT Unfortunately No Talent...
zhaozhy
帖子: 95
注册时间: 2006-02-05 18:11
送出感谢: 0
接收感谢: 0

#5

帖子 zhaozhy » 2008-06-16 18:47

谢谢楼上各位!!但是具书上说这个程序是时间程序,执行./a.out 127.0.0.1 没反映!!!提示错误
头像
thyme
帖子: 38
注册时间: 2007-06-16 16:36
来自: #17 city
送出感谢: 0
接收感谢: 0
联系:

#6

帖子 thyme » 2008-06-16 19:45

是不是服务器没有开啊
zhaozhy
帖子: 95
注册时间: 2006-02-05 18:11
送出感谢: 0
接收感谢: 0

#7

帖子 zhaozhy » 2008-06-16 20:45

要怎样的服务器啊!!!!!
头像
thyme
帖子: 38
注册时间: 2007-06-16 16:36
来自: #17 city
送出感谢: 0
接收感谢: 0
联系:

#8

帖子 thyme » 2008-06-16 21:04

你看的是《unix网络编程》卷1是吧,接着看下去,后面有服务器代码
zhaozhy
帖子: 95
注册时间: 2006-02-05 18:11
送出感谢: 0
接收感谢: 0

#9

帖子 zhaozhy » 2008-06-16 21:36

谢谢!!!连书都看出来了;太霸道了,感谢你
周元平
帖子: 2
注册时间: 2008-06-17 16:27
送出感谢: 0
接收感谢: 0

<stdio.h>can not find

#10

帖子 周元平 » 2008-06-20 0:02

编译最简单的程序,
找不到头文件,<stdio.h>
是否安装后要设环境变量?
gcc或者其它.
zhaozhy
帖子: 95
注册时间: 2006-02-05 18:11
送出感谢: 0
接收感谢: 0

#11

帖子 zhaozhy » 2008-06-20 14:25

配置GCC
刚装好的系统中已经有GCC了,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,安装了这个包会自动安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必须的软件和头文件的库。
可以在新立得里面搜索build-essential或输入下面命令:
代码:
sudo apt-get install build-essential


安装完成后写一个C语言程序testc.c测试一下。

代码:

#include<stdio.h>
int main()
{
printf("Hello Ubuntu!\n");
return 0;
}


有问题wiki或者google 或者看
http://blog.sina.com.cn/s/blog_4ed18f2901008rf7.html
goddivine
帖子: 3
注册时间: 2008-04-13 13:08
送出感谢: 0
接收感谢: 0

#12

帖子 goddivine » 2008-06-21 9:47

晕死,你的那个connect中的f(connect(sockfd,(sockaddr *)&servaddr,指针sockaddr*改成struct sockaddr *就可以了
zhaozhy
帖子: 95
注册时间: 2006-02-05 18:11
送出感谢: 0
接收感谢: 0

#13

帖子 zhaozhy » 2008-06-21 10:45

我知道了!!!谢谢!!!我用 vc的时候这样写可以编译!!!
pipisi
帖子: 8
注册时间: 2007-07-02 21:28
送出感谢: 0
接收感谢: 0

#14

帖子 pipisi » 2008-06-29 21:46

thyme 写了:你看的是《unix网络编程》卷1是吧,接着看下去,后面有服务器代码
哎,悼念steven
flyinflash
帖子: 2376
注册时间: 2006-09-21 14:28
送出感谢: 0
接收感谢: 0

#15

帖子 flyinflash » 2008-07-02 1:38

回复

回到 “C/C++/Java”