标题: 求助!C编程问题!!
ms93765555
新生入学
Rank: 1
注册用户



UID 191146
精华 0
积分 0(积分有什么用?)
帖子 2
阅读权限 10
注册 2007-4-21
状态 离线
发表于 2007-4-21 01:49  资料  个人空间  短消息  加为好友 
求助!C编程问题!!

求助高手帮我看下下面的代码(乱了点)/Q1w
c.H,CG9U

//client[/COLOR] rR)ve;L8J5o3hh9H
#include <unistd.h>[/COLOR]!nW?6s;[i
#include <netinet/in.h>[/COLOR]Linux伊甸园论坛y)[8ZMI@
#include <arpa/inet.h>[/COLOR]j p%FC:C_
#include <netdb.h>[/COLOR]
,^5d/o v0t~4P#include <stdlib.h>[/COLOR]www.linuxeden.com
iW7P CL$p

#include <SDL.h>[/COLOR]
        v(CzsV#include <SDL_image.h>[/COLOR];WM$th |0k_ w
#define SER_PORT 1500[/COLOR]www.linuxeden.com
N)w1]+\(v"M

#define MAX_LEN 261[/COLOR]6lj*G%a@NizAP
void ShowJpg(char *file, SDL_Surface *screen, int x, int y)[/COLOR]
p @/z7]Bu
f
{[/COLOR]-^\x7F h+^
SDL_Surface *image;[/COLOR]X VJT5^suD6SH/`M
SDL_Rect dest;[/COLOR]www.linuxeden.comJz#Dcr_l|
9M&pi        X S$y+ve7R
image = IMG_Load(file);[/COLOR]
OlAI.|!?-[!Jwwww.linuxeden.comif ( image == NULL ) {[/COLOR]
4\
r2y$`I0lM,@
fprintf(stderr, "无法加载 %s: %s\n", file, SDL_GetError());[/COLOR]
L._$M-Xib T:U7[www.linuxeden.comreturn;[/COLOR]
1{-dM2LBB8Rwww.linuxeden.com}[/COLOR]
#?        ^:Y6z'L_
\ u

x_/K;z-Adest.x = x;[/COLOR],aRnM S
dest.y = y;[/COLOR]        ZMl i(rT J Gg
dest.w = image->w;[/COLOR]
9f,sMa3\ t*\z9NLinux伊甸园论坛dest.h = image->h;[/COLOR]
G*v H%Ya[1{SDL_BlitSurface(image, NULL, screen, &dest);[/COLOR]www.linuxeden.comk5]*WR9mY#i
SDL_UpdateRects(screen, 1, &dest);[/COLOR]www.linuxeden.com2R T;E xM,S
}[/COLOR]
6@/tO"T?m e6u Bint main(int argc,char **argv)[/COLOR]
X:R,|o#I%H        O2jZ5f8TLinux伊甸园论坛{[/COLOR]
"pyvk M$[Linux伊甸园论坛int sd;[/COLOR]3UuRL.r A
int rn;[/COLOR]Linux伊甸园论坛uX-J?1R'E2\
g t

int i=1;[/COLOR]
E        S        s w[G#yBint bn;[/COLOR].Xp9GM\0Qz2x0?
struct sockaddr_in client,server;[/COLOR]
W0er5VNrLinux伊甸园论坛struct hostent *h;[/COLOR]www.linuxeden.com`'s h cr(q
char buf[MAX_LEN];[/COLOR]
Y`6V+f!x(b/r6_r$LFILE *fq;[/COLOR],{
@p(HR"P

char ch;[/COLOR]www.linuxeden.comQ8L2n,u]}
sd=socket(AF_INET,SOCK_STREAM,0);[/COLOR]\p;c*g3? K8^.n
if(sd < 0)[/COLOR]Yl+\8X-]~ed
o*o8cN

{[/COLOR]
)z(QY4n6[OFOprintf("Creating socket error!\n");[/COLOR]
D.lK7g6VU
WSa4b
exit(1);[/COLOR]4e2[JPF#q8V2J
}[/COLOR]
a
lM}kpE.V`s8l
if(argc < 2)[/COLOR]
A2hy(s.Ni{[/COLOR]
O#p.v1Qeprintf("Not enough parameter!\n");[/COLOR]S        [r1Z"V.f1sg
exit(1);[/COLOR]
e{ ii*` \^i}[/COLOR]Linux伊甸园论坛TKb6Yg'x!US
h=gethostbyname(argv[1]);[/COLOR]www.linuxeden.com
y%[O+giz

if(h == NULL)[/COLOR]
bP
RURA
{[/COLOR]
+A
RP aYr^8g]www.linuxeden.com
printf("Can't get hostname");[/COLOR]~j*n(n3h(B W_b
exit(1);[/COLOR]
i#M;k(r9b
VPE
}[/COLOR](pv7XtR J
bzero(&server,sizeof(server));[/COLOR]
z
LX#em
server.sin_family=h->h_addrtype;[/COLOR]www.linuxeden.comF|-L JJVFX7U5k
server.sin_port=htons(SER_PORT);[/COLOR]
Nt;E
_Z:S;Jl7m
server.sin_addr= *((struct in_addr *)h->h_addr);[/COLOR]
Y @o        bj9O8J _9x'X:rint opt=1;[/COLOR]
&]!v'k.k tvsetsockopt(sd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));[/COLOR]

I\3t!rKwww.linuxeden.com
if(connect(sd,(struct sockaddr *)&server,sizeof(server)) < 0)[/COLOR]Linux伊甸园论坛/dA8^G*[/ICCad
{[/COLOR]
b!m0d$a
y
VD        Ik8l
printf("Connect Error!\n");[/COLOR]
']4vd7S,B
N,C HLinux伊甸园论坛
exit(1);[/COLOR]"xj.zE~o\
}[/COLOR]0i%yM`7tu1j
SDL_Surface *screen;[/COLOR]
:J&Nd*S        S~$D9q$pUint32 color;[/COLOR]
3To,I(QsH
X9k
if ( SDL_Init( SDL_INIT_VIDEO) < 0 ) {[/COLOR]
;NfD,d
TxLinux伊甸园论坛
fprintf(stderr, "无法初始化SDL: %s\n", SDL_GetError());[/COLOR]
dpw
wy Lwww.linuxeden.com
exit(1);[/COLOR]J)s!K5wf&yA,UPe
}[/COLOR]:m_FD|`"z!n
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE); /*640 X 480 X 16位色*/[/COLOR]
+Q n,e]4Y7nLinux伊甸园论坛if ( screen == NULL ) {[/COLOR]Linux伊甸园论坛JB? ~rw+dh,wX6H
fprintf(stderr, "无法设置640x480x16位色的视频模式:%s\n", SDL_GetError());[/COLOR]
W)N"A9A2Ow*r6}Qf

exit(1);[/COLOR]www.linuxeden.com8G/z
a }"J(dB

}[/COLOR] s&rtyj|f'UK;H
atexit(SDL_Quit);[/COLOR]Linux伊甸园论坛5R n8n-H        W
while(1)[/COLOR]
hM7AS
hU
{ [/COLOR]
4?-W1@D9hLm,{Kfq=fopen("2new.jpg","w+b");[/COLOR]{#r@w%z$lr:y a?0x
if(fq == NULL)[/COLOR]Linux伊甸园论坛~sBh*G5|-~,xB
{ [/COLOR]Linux伊甸园论坛!}0U7i@8{mZ c
printf("File open error!\n");[/COLOR]A!N-E_$EG"G&@
exit(1);[/COLOR]7D&BQG
Fd NX

} [/COLOR]
z9sN9Y(MKLinux伊甸园论坛while(1) [/COLOR]
MzW#Wa{[/COLOR]
K^&C-nH-drn=recv(sd,buf,MAX_LEN,0);[/COLOR]2cB,Uj2c%y}~b
if(rn <= 0) [/COLOR]!L.N9nZ)r1Sh
R
T5`p

{[/COLOR] ]y?"L}3[&z1n#kp{#@
printf("Can't recieve file!\n");[/COLOR],Vr(G/`!x7W#J o
exit(1);[/COLOR]
[Xf"p7InW A:C:kLLinux伊甸园论坛}[/COLOR]
K        WS
B-G{1WLinux伊甸园论坛
buf[rn]='\0';[/COLOR]KY!k#k0dx-U
if(strcmp(buf,"File send over!") == 0) //判断是否结束[/COLOR]
X$nQ+J(d
EB3?jLinux伊甸园论坛
{[/COLOR]g/r i;{D
printf("-----: %s\n",buf);[/COLOR]
Ej0`E2DU

break;[/COLOR]www.linuxeden.com8` U        fXL7w
}[/COLOR]
(s-a8nhSwk$Zif(rn != 0)[/COLOR]
:mE{c%E:Tfwrite(buf,10,26,fq);[/COLOR]
F@qB.u-y,~fNg

//printf("get file:%s\n",buf); //---2[/COLOR]
5y` N:H|9?J"u4Qbzero(buf,sizeof(buf)); [/COLOR]YQm(t$w^0V8hU
bn=send(sd,&i,sizeof(int),0); [/COLOR]
1i\M`?#i?if ( i==1 ) [/COLOR]lL(Op2M6dC n'U
{ [/COLOR]
b9L2mn:ci=2; [/COLOR]
#bJq+{aC7oWi8wbreak; [/COLOR]
3z[I9HNX6]m5v} [/COLOR]o]0h I;@\
if ( i==2 ) [/COLOR]!Q/zc,kk3f3?
{ [/COLOR]hI6A5l_d
i=1; [/COLOR]
-x^8I?r3Ybreak; [/COLOR]
GXp1u        t;Xq)m#S}[/COLOR]Linux伊甸园论坛%r C#zvSV.`(NoOe
}[/COLOR]
Is w6aJk2Ffclose(fq);[/COLOR]
O%pE%n"w        a6f
n4p
ShowJpg("2new.jpg",screen,0,0);[/COLOR]
~aM.| e"\Linux伊甸园论坛}[/COLOR]

k)q}wf ]&L jD7s
int done=0; while (!done)[/COLOR]
Hv0vI p+}{[/COLOR]'tXu/Nm
SDL_Event event; [/COLOR]
io|Qy
AI"`
while (SDL_PollEvent (&event))[/COLOR]PC:v6B!e Mb,f
{[/COLOR]
&M.i-P-Pp0UIswitch (event.type)[/COLOR]
/s Y%u0r~sF2tfK{[/COLOR]F&H*_,LS9c
case SDL_KEYDOWN:[/COLOR]
wX$G,DM;K'~break;[/COLOR]
5t7RU'xP1E-Acase SDL_QUIT:[/COLOR]Linux伊甸园论坛)Wg4Qj+L
done = 1;[/COLOR]
&J w$y+F
VQkvLinux伊甸园论坛
break;[/COLOR]
0o6iEO
[X
default:[/COLOR]
-T V3t4wn8dwww.linuxeden.combreak;[/COLOR]
{6D.Qa"oSSeM%iLinux伊甸园论坛}[/COLOR]www.linuxeden.comf        d;tXMhWed/O
}[/COLOR]
p,lY6_`l&s*V)N!z'n} [/COLOR]www.linuxeden.comBk!dUd+dkE&s
close(sd);[/COLOR]
#C;n(^
XF&QKSSM2d
return 0;[/COLOR]
$L{e#n"FK1?N}[/COLOR]
e8gfo/\-vj-Bx4TAwww.linuxeden.comf!EKY9e+}
\4J

//server5WLQ`X:s_
#include <sys/socket.h>
#\ v1jgT;p7d#[#include <sys/types.h>
L#f#kw.YX%n k1u

#include <stdlib.h>
6Pu%c:O\
]E9y
#include <stdio.h>'i7}!ss3x FZ'K8o
#include <string.h>www.linuxeden.com[;bRkQo
Xr]7gu

#include <unistd.h>
Fm@T+wV:s/BMwww.linuxeden.com#include <error.h>&E };u%NgV7x
#include <netinet/in.h>Linux伊甸园论坛"K0\EX*D QB
#include <arpa/inet.h>www.linuxeden.com}p3D)] cV$t
#define SER_PORT 1500www.linuxeden.com'['W1j5RM`
#define MAX_LEN 261
JC*@"_-ZJ5]
i
ee
int main(int argc,char **argv):J^8Q/y/IL3ps
{www.linuxeden.com        `8_2bKe;l
int listensd,connectsd;lT(z.M1A}6a
struct sockaddr_in server;www.linuxeden.com$X(q A        o5k'@%n
struct sockaddr_in client;www.linuxeden.com)V.wd*@;h\
char buf[MAX_LEN];
;zO;YP1~www.linuxeden.comFILE *fp;
3H8e/|(M.^z:_fchar end[]="File send over!";
$r Mk)k^]int i=1;www.linuxeden.com.d8P7FEIZ;r
listensd=socket(AF_INET,SOCK_STREAM,0);
JL8x4MY6sMP8v8eif(listensd < 0)0cgA#o2c%t fd)y
{
T.BR0I]9`www.linuxeden.comperror("Creating socket failed:");H7@ce|
m8C

exit(1);www.linuxeden.coml7I4GJQ
}
&H#D^6Q;e3ywww.linuxeden.com 3qh1eZ(d)G's
int opt=1;
*_^Xu&jx;J*`3zwww.linuxeden.comsetsockopt(listensd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt)); e~[I1b]R        F
bzero(&server,sizeof(server));a
\| G9]

server.sin_family = AF_INET;dJ o3oR
server.sin_port = htons(SER_PORT);
U+S6u+t0}
kwww.linuxeden.com
server.sin_addr.s_addr = htonl(INADDR_ANY);(x5E&e[*d3Yge
if(bind(listensd,(struct sockaddr *)&server,sizeof(server)) < 0)Linux伊甸园论坛f9d6_&L(}N
{www.linuxeden.com m8s!cE[T?5s ^
perror("Bind error.");Linux伊甸园论坛] N%wQqX&Vp W
exit(1);Linux伊甸园论坛@~*qQ_!S
}www.linuxeden.com u%]Z)[*o2D;N:N
if(listen(listensd,5) == -1)
y4Wf
VA+Y?
{C(if*tY+CD bA
perror("listen() error\n");1yio"f(wWrN
exit(1);www.linuxeden.com!XN5vfrV*H@
wx

}
sG4}3t Qh9wD m+u

#F SH|;i4D&aN7|
int rn ;
e^^Gtw7qint sin_len=sizeof(client);
_&f6M+j,PNwww.linuxeden.comif((connectsd = accept(listensd,(struct sockaddr *)&client,&sin_len)) < 0)
8zu$p}%D9Rg,t/A{
}sFU:E
}A'L7A
printf("Can't accept the request!\n");
4Ir.x$S
sa/y6KrLinux伊甸园论坛
exit(1);LD Y0`1S(C7I??
}
X#EyoPx}fp=fopen("1.jpg","rb");
k(`8V XxRLinux伊甸园论坛if( fp == NULL )z.BZ|-SI7i
{
v0MY6P'`$r!PRbwww.linuxeden.comprintf("File open error !\n");
MOK%RR }%b
}0\
exit(1);
*HN:rWj7HaLinux伊甸园论坛} bzero(buf,sizeof(buf));
fuD!Yp$m9k1A
2? Q        z|L+\vg
U&C\www.linuxeden.com
while(fread(buf,10,26,fp))
4]7H'B1Z;uxT{
X%m5V#i2Ihr;h1U//printf("readed is : %s\n",buf); //-------1
!|$O1Ed        L k9Nrn=send(connectsd,buf,MAX_LEN,0);/M RLCPT
if(rn < 0)V:e'yFZ?V
{
P_+Hq7jh;]
K
printf("File send error!\n");
KC)K oL)xQexit(1);/{(fdqa.l
}(ifs:t-e$K@
bzero(buf,sizeof(buf));'U4L(X%iH qTG;]
}
r#p.DW#Ysy,VLinux伊甸园论坛rn=send(connectsd,end,strlen(end),0); //发送一个结束语句!
2a        SjA7g|Teif(rn < 0)
Tz*Z%Hh Rmk{&]Xo!a6r6Or2a
printf("ending send Error!\n");
,dCF,^
J
exit(1);Y0Id#X;qQV
}
.F1aS@"Y1H\+k7DpLinux伊甸园论坛printf("send end to the server:%s\n",end);
ll}nq)UO

nOmfZ&E&[9p
fclose(fp); s"feu)N-h*Gq(ba
while(1)
rB'w;w,N*}        b.B{
jN P FDint i;
        wL[QGA)Yint bn; &a Vzv|2ST
bn=recv(connectsd,&i,sizeof(int),0); www.linuxeden.comybPS \uU{4}(i~)x
if ( i==1 ) uzOQ}6f?
{
T8j-P#d&\c1U5Xfp=fopen("2.jpg","rb");
9O#n)o ZLu-a9T5Qwww.linuxeden.comif( fp == NULL )
?nb Al w jz{
+a3o?&wm5s9dprintf("File open error !\n");
6Jp/j/`/T        q-Ky|Linux伊甸园论坛exit(1);
uN!`jY}
b+E
s6`j
bzero(buf,sizeof(buf));
Zg"FyH-`www.linuxeden.com www.linuxeden.com
yp1JR        @ V|

while(fread(buf,10,26,fp))
y:N#M*\:OjkN{
pv I sv1Y//printf("readed is : %s\n",buf); //-------1/y"tTRy(V#l7W^
rn=send(connectsd,buf,MAX_LEN,0);:Rd%ZU
if(rn < 0).Ww D3tQ
{
e!K,H        R
T+^www.linuxeden.com
printf("File send error!\n");
K-i.X        zSzs)e$Sexit(1);Linux伊甸园论坛)l}Qq2Z,yj
}+m&PM"C!Y3j%rt
EdZ

bzero(buf,sizeof(buf));
4H7X        A)I!dr(E8G} boS:xa
rn=send(connectsd,end,strlen(end),0); //发送一个结束语句!Linux伊甸园论坛@;@:WX.C:y'F
if(rn < 0)cQ;Z:`0u'o
{
/n4|(M%w5PR#fLinux伊甸园论坛printf("ending send Error!\n");C\6w$yQRGM
exit(1);
5U*_j)X d:zz(]m}
'L
]n[-^/_&E#nh!~
printf("send end to the server:%s\n",end);
Q!Mc4anT(oYfclose(fp); www.linuxeden.com(x
g\0xz7K)@9z,N

}
y.NfG"v!f4r^.R1Rmwww.linuxeden.comif( i==2 ) x%U
F        j
P3oNV!Y

{ *I!^A~8D
ZQt

fp=fopen("1.jpg","rb");www.linuxeden.com(YGx3ohC
if( fp == NULL )
&h!hGHm%z
Wwww.linuxeden.com
{
        b+C5b Td*K:iprintf("File open error !\n");Linux伊甸园论坛[jG(B6\N
exit(1);
*Tmb"c-X.m}
y'c9K        z
X;qP
LD
bzero(buf,sizeof(buf));
t%\.LP+~
[7H8C/U \$NH-A!_a        {Fwww.linuxeden.comwhile(fread(buf,10,26,fp))Linux伊甸园论坛Cz
HtBX}

{
-iQe        ^3bG9Fwww.linuxeden.com//printf("readed is : %s\n",buf); //-------1
;a|JZT'Khrn=send(connectsd,buf,MAX_LEN,0);www.linuxeden.comx        s'Y$w0U[Jp;Og
if(rn < 0)
/s-vEc#adj{2X u;R|0Dx2w*b
printf("File send error!\n");
'UM*~dU.k^9m0HJwww.linuxeden.comexit(1);
6Df_-?@&do}www.linuxeden.com7t xa a
sp

bzero(buf,sizeof(buf));
;N)[$DN:V}
w8n&rkXr+o?rn=send(connectsd,end,strlen(end),0); //发送一个结束语句!
a0Nz(^Af0S&Q,Mif(rn < 0)u R"U$K        oe
Z

{J.w.r$|4s
N

printf("ending send Error!\n");
C`8A)kW&_4J~$c7VPexit(1);/R        St!Hp&[x        b(L
}
g1J)v@yprintf("send end to the server:%s\n",end);-Oc#G        _'N
aHS5P,gK
fclose(fp);
\"N%bhk3UvLinux伊甸园论坛} \p
u^+wR

} H;zs!S5LBB
close(connectsd);
P&qm'r_        iclose(listensd);P5q1Ix|6v'O Kp5W
ZrC

return 0;Linux伊甸园论坛A X
t
z$F$f#d

}
+P;qTxI*t7?
4M4r"P;S|#ZLinux伊甸园论坛想模拟个服务端循环发送图片,客户端接受并显示.但客户端生成的图片无法显示.请老鸟帮我看看啊.能帮我改改最好了.
2?"U _{:^$T)?L这个就是小弟的毕业设计课题啊``过几天就要交了``急啊!!

顶部
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2007-4-21 13:26  资料  个人空间  短消息  加为好友 
传文件?文件是否传完整了?是否按照原来格式传的?自己先找找原因啊





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
ms93765555
新生入学
Rank: 1
注册用户



UID 191146
精华 0
积分 0(积分有什么用?)
帖子 2
阅读权限 10
注册 2007-4-21
状态 离线
发表于 2007-4-21 17:44  资料  个人空间  短消息  加为好友 
找了额``找了半天都找不到Linux伊甸园论坛$t$}k2ex4Q)q
+~_#|Ktme
所以才来求助的

顶部
不容错过的IBM 集群技术资源汇总
viking00000
新生入学
Rank: 1
注册用户



UID 196468
精华 0
积分 0(积分有什么用?)
帖子 1
阅读权限 10
注册 2007-5-16
状态 离线
发表于 2007-5-16 21:32  资料  个人空间  短消息  加为好友 
你的图像处理头文件是回事#include <SDL_image.h>
&V!I
X+` l uC)w
是自己定义的奥~~?
m.J|Um$Zwww.linuxeden.com不是应该//#include <SDL/SDL.h>欧,!p@PK%M%K.V
图形处理不怎么懂,编译不通过

顶部
不容错过的IBM 集群技术资源汇总
 



当前时区 GMT+8, 现在时间是 2008-5-17 09:41

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.201537 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP