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



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

求助高手帮我看下下面的代码(乱了点)Linux伊甸园论坛y)cIH\-?ue^
//client[/COLOR]
5pD6N!w~!{N        r8A#include <unistd.h>[/COLOR]
!jK(VC4aS#include <netinet/in.h>[/COLOR]
.vd,\6D9[
O1JsL:tE
#include <arpa/inet.h>[/COLOR]

u9H_ `&dc
#include <netdb.h>[/COLOR]Q0Z4iv/K;\K[A
Z

#include <stdlib.h>[/COLOR]
eu{3pW#include <SDL.h>[/COLOR]
Q.zH _G6xC#include <SDL_image.h>[/COLOR]
S~&t7]@"n9Kwww.linuxeden.com#define SER_PORT 1500[/COLOR]
\Ieh^5O

#define MAX_LEN 261[/COLOR]r zP9I8B*m!v4V
void ShowJpg(char *file, SDL_Surface *screen, int x, int y)[/COLOR]
|6Q0rJ-Dq`n
p
{[/COLOR]
t8V9Uf7mwww.linuxeden.comSDL_Surface *image;[/COLOR]
~-N&W qF)?;],D~0aHSDL_Rect dest;[/COLOR]
-f.z+v@T l i        m(k .N,Kb"a:j
[

image = IMG_Load(file);[/COLOR]
%n$F.R mBA6x jwww.linuxeden.comif ( image == NULL ) {[/COLOR]Linux伊甸园论坛-H'j0~c#C_
fprintf(stderr, "无法加载 %s: %s\n", file, SDL_GetError());[/COLOR]
i K(~xSw3I aoreturn;[/COLOR]

x#t(ac!Gd/OLinux伊甸园论坛
}[/COLOR]
]*C-?"c(T -PS"IV \4LFW:w
dest.x = x;[/COLOR]5v"{WV0Y,Jt[
dest.y = y;[/COLOR]
U6a!P@I\dest.w = image->w;[/COLOR]0^AMJW!w
dest.h = image->h;[/COLOR]Linux伊甸园论坛N"S/W5}}-f
Lk

SDL_BlitSurface(image, NULL, screen, &dest);[/COLOR]&b
Lx?#}9O9u

SDL_UpdateRects(screen, 1, &dest);[/COLOR]
}$g|#u8o
{
}[/COLOR]
L
G.j {t)RO
int main(int argc,char **argv)[/COLOR]
#i;Bb5IAK&u{[/COLOR]yae6G3CKb5L/U
int sd;[/COLOR]
'j Gss_3y(n4]nint rn;[/COLOR]0VB8V({,F[
int i=1;[/COLOR]
[7BVA;JLinux伊甸园论坛int bn;[/COLOR]-|*l.i6]'Y [
C)W7~

struct sockaddr_in client,server;[/COLOR]
Q\s WNG3q _@)Vstruct hostent *h;[/COLOR]
q]@p4Px{8Schar buf[MAX_LEN];[/COLOR]
#n/a/|Cx$YFILE *fq;[/COLOR]
?8h1^WX/vchar ch;[/COLOR]
;yst)IR"UkLinux伊甸园论坛sd=socket(AF_INET,SOCK_STREAM,0);[/COLOR]www.linuxeden.com1VpD1blAo7T/b
if(sd < 0)[/COLOR]g%NzM4tA3XFw
{[/COLOR]        N\5oe#?!A
printf("Creating socket error!\n");[/COLOR]Linux伊甸园论坛1\#| l dsx,l
exit(1);[/COLOR]
(~5_ `2h r3f8kB h}[/COLOR]$O.?.|Aw6O%~~H `P
if(argc < 2)[/COLOR]'Hpf.tg*^8v
{[/COLOR]'{k5YP0j
aA

printf("Not enough parameter!\n");[/COLOR]Linux伊甸园论坛#~IWRB|Q
exit(1);[/COLOR]3o4j$A[#f:t+w
}[/COLOR] D(H6}U5M
h=gethostbyname(argv[1]);[/COLOR]www.linuxeden.com#S T!W(}m"c.M5{3F@
if(h == NULL)[/COLOR]Linux伊甸园论坛%[i,U
s d

{[/COLOR]
p/~,v1E9UE%p8`,cprintf("Can't get hostname");[/COLOR]
-E~
TZJ
exit(1);[/COLOR] k1Dz$t$z
}[/COLOR]
\0bCX;f-YTN        lZ4ubzero(&server,sizeof(server));[/COLOR]
"o;Vt*p2xp        DLinux伊甸园论坛server.sin_family=h->h_addrtype;[/COLOR]
q*{du1YgyLinux伊甸园论坛server.sin_port=htons(SER_PORT);[/COLOR]www.linuxeden.comm/y[ uIfW+D
server.sin_addr= *((struct in_addr *)h->h_addr);[/COLOR]www.linuxeden.com0DU-l&ut        P
int opt=1;[/COLOR]
s$b}w.M)Nawww.linuxeden.comsetsockopt(sd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));[/COLOR]#uk!M/L.}wp;|.ny
if(connect(sd,(struct sockaddr *)&server,sizeof(server)) < 0)[/COLOR]
g(i\C2v4fq0VS{[/COLOR]7r)R#t3yFQ
printf("Connect Error!\n");[/COLOR](sM6i$~/bE$D8zs
exit(1);[/COLOR]
*_i.By#t*HLinux伊甸园论坛}[/COLOR],j        b8m        Om%r:jB
SDL_Surface *screen;[/COLOR]!QK@9eLQ
Uint32 color;[/COLOR]
7D-W&zA \^if ( SDL_Init( SDL_INIT_VIDEO) < 0 ) {[/COLOR]4pO;pB]0OZ
fprintf(stderr, "无法初始化SDL: %s\n", SDL_GetError());[/COLOR]

z'f^ wu(F9m `#mULinux伊甸园论坛
exit(1);[/COLOR]www.linuxeden.com},UL~5l$^mo
}[/COLOR]
'DTU(NT5vwww.linuxeden.comscreen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE); /*640 X 480 X 16位色*/[/COLOR]
k3mf3@4Fw,[bt"Vif ( screen == NULL ) {[/COLOR]XAw7fJ)o9HU
fprintf(stderr, "无法设置640x480x16位色的视频模式:%s\n", SDL_GetError());[/COLOR]5R T-I.a!UuWa-a
exit(1);[/COLOR]
/MDu        D`%O}[/COLOR] e'q.o?sXG
atexit(SDL_Quit);[/COLOR]www.linuxeden.comCv*_8L$C6o
Dg

while(1)[/COLOR]s,mE^e6or7o-],}1L'h
{ [/COLOR]

v
J.W(LXi#Eu$q
fq=fopen("2new.jpg","w+b");[/COLOR]
0htRB%NM:HwZ8?if(fq == NULL)[/COLOR]&Kc-rs
GZ\P

{ [/COLOR]2A8A3}I4Z#R5E5S
printf("File open error!\n");[/COLOR]a$XzUa(m8S.}6p
exit(1);[/COLOR]

C6A]c.X%| w2Qwww.linuxeden.com
} [/COLOR]
$X9nK
wX
Szwww.linuxeden.com
while(1) [/COLOR]
-XBr1a1Tw+Y6OYf-@ a{[/COLOR]5A
yb#O$d:T0A

rn=recv(sd,buf,MAX_LEN,0);[/COLOR]
0GJ}flM        J!T3kVUif(rn <= 0) [/COLOR]
?7W YZ6fUuF5\"Q P1]{[/COLOR]
5vv&nEA9C)Swww.linuxeden.comprintf("Can't recieve file!\n");[/COLOR]
dv3i"i'H4P
eZ1Pwww.linuxeden.com
exit(1);[/COLOR]
)?2Gf Pgu"H}[/COLOR]Linux伊甸园论坛v~"{T;{4y7o
uf"q

buf[rn]='\0';[/COLOR]'dM a,m(mR
if(strcmp(buf,"File send over!") == 0) //判断是否结束[/COLOR];eT!h0~WJ'Q
{[/COLOR]n | O        f$b`+D8j.{{e
printf("-----: %s\n",buf);[/COLOR]Linux伊甸园论坛+xYnUDq
break;[/COLOR]Linux伊甸园论坛
f6nqer$M4`)R2\

}[/COLOR]Z4K d2R'Z7L"k\C-^
if(rn != 0)[/COLOR]
T&g jB9[)WM~ h6Nfwrite(buf,10,26,fq);[/COLOR]
Sr        ZU9ScI//printf("get file:%s\n",buf); //---2[/COLOR]
2D/eg
zr`
bzero(buf,sizeof(buf)); [/COLOR]7RH6Wybua
bn=send(sd,&i,sizeof(int),0); [/COLOR]
I#J;]'a*u0`Z uA {wif ( i==1 ) [/COLOR]
'I%{7Ktm:ELinux伊甸园论坛{ [/COLOR]
Xe5kE*rN)ciLinux伊甸园论坛i=2; [/COLOR]/d8A6uHG%y1@
break; [/COLOR]www.linuxeden.com%u NJp+hjv
} [/COLOR]
f2ZO0D$[']s`www.linuxeden.comif ( i==2 ) [/COLOR]

e]X/O|v6XJ
{ [/COLOR](e-m6tC8m]!b        Q
i=1; [/COLOR]
X)~ tP3xbreak; [/COLOR] O&U%LI;}h(WX r}-h2B
}[/COLOR]`\nG"W!J3p
}[/COLOR]
iGKz9q2b0D SF3ofclose(fq);[/COLOR]9QAQ:f*H'H
ShowJpg("2new.jpg",screen,0,0);[/COLOR]!eC%}9Oj
}[/COLOR]www.linuxeden.com\X{2~/TH)u
int done=0; while (!done)[/COLOR]
g0G+b8Q#W1Wu+^{[/COLOR]
-k L!`m6mJz*swww.linuxeden.comSDL_Event event; [/COLOR]
2|.ht)If/H5Jwww.linuxeden.comwhile (SDL_PollEvent (&event))[/COLOR]
NE9F!xyLinux伊甸园论坛{[/COLOR]oG,R0sY2IfT?
switch (event.type)[/COLOR]
t0n*b}'E7LG{fwww.linuxeden.com{[/COLOR]*UUV \g0M{#?
case SDL_KEYDOWN:[/COLOR]
l"x[-VF[/jwl#r,g#F.dbreak;[/COLOR]Linux伊甸园论坛&X:Cid&C4G
case SDL_QUIT:[/COLOR]q&|}0r
f$fo

done = 1;[/COLOR]6i
U I m!BSL^

break;[/COLOR]5d1RL
z,t.KN*G

default:[/COLOR]Z5q(UG,{] ^"u M
break;[/COLOR]@M1W/t0B;f5} vqQb
}[/COLOR]
6F)@.j
n[
}[/COLOR]
.F+oC }b&S
ow9F%Sg
} [/COLOR]www.linuxeden.come(^QcJ^:C        }
close(sd);[/COLOR]
m3t`;GD9Yreturn 0;[/COLOR]
o@_
c|;S$se
}[/COLOR]&md1~
}*\


9VO\3LSG7tLinux伊甸园论坛//server
m8M]F$f"M-X |Linux伊甸园论坛#include <sys/socket.h>
+Q3AP5a0L        Bh7M)Cwww.linuxeden.com#include <sys/types.h>
b.D]c}%bTP[P#include <stdlib.h>%QQg&b,o,N0E!f
#include <stdio.h>Linux伊甸园论坛*z-u a        p/cdE
#include <string.h>D3f*]NX4uG
#include <unistd.h>

kUnGhRLinux伊甸园论坛
#include <error.h>1lL&fdOY?]
#include <netinet/in.h>l*O-^u*e'_
#include <arpa/inet.h>
QiYV!p6s#define SER_PORT 15000Mw[*@4?PK2["j
#define MAX_LEN 261Linux伊甸园论坛|5m4u^eu)^X3n
int main(int argc,char **argv)
$[%V`Y!p
le
{8j        uR*L3v}c&_(EDD
int listensd,connectsd;
#f*n.Q%[3nstruct sockaddr_in server;
g%D\.`Cr
ye"]Linux伊甸园论坛
struct sockaddr_in client;
^#^uB$M\www.linuxeden.comchar buf[MAX_LEN];
9B!i!v
SznNp T
FILE *fp;
        `&r$u(g1U)y^/Kchar end[]="File send over!"; Ca n8O(e(YK
int i=1;www.linuxeden.com.C*K1DElj @C
listensd=socket(AF_INET,SOCK_STREAM,0);www.linuxeden.com_.r{{jY
if(listensd < 0)
,_0ol.V$d|JQjLinux伊甸园论坛{
3h?lF])t,},T&d)Gdperror("Creating socket failed:");
tH8a4N$nu,i ^exit(1);
o @1m/B&c5Bwww.linuxeden.com}
iC[/@g?
a&[~+k0v
W1X;H _(z
int opt=1;
#_
h9hn#t/bt,Vk3r?
setsockopt(listensd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
E-k2w(^6VDTLinux伊甸园论坛bzero(&server,sizeof(server));Linux伊甸园论坛(dk N2UygRP!N
server.sin_family = AF_INET;jR0p
MIU

server.sin_port = htons(SER_PORT);
%K+Q3Ir!|{*sI%ELinux伊甸园论坛server.sin_addr.s_addr = htonl(INADDR_ANY);)yPoP3Nw3F$v4J
if(bind(listensd,(struct sockaddr *)&server,sizeof(server)) < 0)
-[3d.u0Uo3Obb{P_j?9IEK"^/B
perror("Bind error.");`-N3ldE|$w
exit(1);"[        s%T
|;n,d(v

}
j)S3o:C!X-x|        s#dif(listen(listensd,5) == -1)
[d9\dt'Qwww.linuxeden.com{
uJ8HojEperror("listen() error\n");'h/AWq[Etn
exit(1);
ww&jU&i|^}}e;u
Q]YRQ}

|x!Z5xK6eyK
int rn ;
Y_%d#F
Nkwww.linuxeden.com
int sin_len=sizeof(client);P*@v
R T ijA+g

if((connectsd = accept(listensd,(struct sockaddr *)&client,&sin_len)) < 0)2EC.es5I5]
{
v5Qxq:ad,Pprintf("Can't accept the request!\n");A+d9DXD7H(j
exit(1);
a}G,h
XAD
}
`f,G |SU j2rwww.linuxeden.comfp=fopen("1.jpg","rb");;p#n&Z0i
n3gs

if( fp == NULL )
'sb
Y0C1F#j
|#^
{Linux伊甸园论坛1}L)R%Ps)v}N
printf("File open error !\n");
,v?RSlCSwww.linuxeden.comexit(1);]g(sU1a7b
} bzero(buf,sizeof(buf));
`os-f5e7f S www.linuxeden.coms%|:k5x)Bq;c/A-z
while(fread(buf,10,26,fp))Linux伊甸园论坛L]w#mZcr
{
(FjC:^6WLinux伊甸园论坛//printf("readed is : %s\n",buf); //-------1
mu)apBAhdR@www.linuxeden.comrn=send(connectsd,buf,MAX_LEN,0);        b1q#Hh
Ep%x)[

if(rn < 0)

j F5}v&@R5Xf1j0G
{
s u        um$EnH'v8f5{0jprintf("File send error!\n");
b$b:qM/hbexit(1);
2p7m6L`(I:f2PZoLinux伊甸园论坛}
j|l]tn!w        o2uj6ZO#G,ybzero(buf,sizeof(buf));&A4`FV?ehI:zd
} Linux伊甸园论坛|-Jf-G5U-o
rn=send(connectsd,end,strlen(end),0); //发送一个结束语句!
b"F2t6z K'x!Yif(rn < 0)
1@6F)_1e]&c%i{
8d3gV(mh,]$cprintf("ending send Error!\n");;z8iS(Ln,y.IF5K
exit(1);
1J2Bb~%ZwZ}ejB+A(O^
Bu

printf("send end to the server:%s\n",end);
;j*[j1h6\?}.D
x.c*{2w/cfclose(fp);
Uh"Du*Y"D6zwhile(1)1jqb)LV
{
!bg;Q
h
v LQI ?www.linuxeden.com
int i;
6A'Z5c+|1RQwww.linuxeden.comint bn;
/leZyV[6nM.X/abn=recv(connectsd,&i,sizeof(int),0);
[#G+wpS8]~-@if ( i==1 )
&{SmkJ~ENwww.linuxeden.com{ Z$u9y_lZF.VO
fp=fopen("2.jpg","rb");N
@L6W6^YnJ

if( fp == NULL )
q-F`1rc n2Sw[R;G{

LAZx*w(z5H
printf("File open error !\n");
q/hi[kQzTwww.linuxeden.comexit(1);
        P]d5_]5S\`&c4{} 7R*RJQL!{Lb.b
bzero(buf,sizeof(buf));*c        u!dR5{v
%n"]$y%E+ebBe6d)I        V
while(fread(buf,10,26,fp))
ldBzH{ 8Q.w
@-|}%{'{

//printf("readed is : %s\n",buf); //-------1
:[ Kp+PpLinux伊甸园论坛rn=send(connectsd,buf,MAX_LEN,0);Cl(zZ5^o1W
if(rn < 0)
^ E$aA7l$Cf{
M%\g%Suo
e
printf("File send error!\n");}
d
_9S6r
M"[        p3O1UC

exit(1);p)p&S APh)E-k*\HY
}`;d!k,W
W{+ZQ8hW([

bzero(buf,sizeof(buf));
IM.g,J3x}
        JM'K
B3BJ |
rn=send(connectsd,end,strlen(end),0); //发送一个结束语句!
,n x3p'_I
`q"ALinux伊甸园论坛
if(rn < 0)
!z}q.j L4I2@_{
-T&W9l5@g
|9luLinux伊甸园论坛
printf("ending send Error!\n");Q"b4cAHf*x
exit(1);
b        bu$[ _ i'I-y

}'M        w8Bh.z Oz        u
printf("send end to the server:%s\n",end);
/{!W
xR:N.y:Bwww.linuxeden.com
fclose(fp);
%k7O*kO(VP/N} Linux伊甸园论坛#sw-B"`'fm+P8]'D
if( i==2 )
ak3{Q;i%_t7n

{ 7B%?rBN7X b
fp=fopen("1.jpg","rb");
x6Sh5S dd&_Bif( fp == NULL )|#NLL)Sx?e#T
{

Y6V
y!N$L\
kg}C
printf("File open error !\n");b
Szv#fB{kL

exit(1);
5g+q3S#Y7hLinux伊甸园论坛} 't^EV#E2OZE(A
bzero(buf,sizeof(buf));www.linuxeden.com,F"a1[S4sa
`

www.linuxeden.comiq~B Z.H
while(fread(buf,10,26,fp)))|
]nar1Z E \'r$Z'B

{ Linux伊甸园论坛InT9C$Gb
//printf("readed is : %s\n",buf); //-------1
kf$A#d-|@www.linuxeden.comrn=send(connectsd,buf,MAX_LEN,0);
Z$P*Y2A8eif(rn < 0)wCM Q8R~*kj
{e$BB,p0Y9dh(m
printf("File send error!\n");
;m0UL2{M+r+g0`exit(1);Fi&w0hzAV
}
8[fQ4`Q&dJbzero(buf,sizeof(buf));cPv6B0?I
}
a#[Xo^rn=send(connectsd,end,strlen(end),0); //发送一个结束语句!
4Y#m-?/GetLinux伊甸园论坛if(rn < 0);@)CD%b\c1w5M}_/z
{
U]7h!p)X$J9Vprintf("ending send Error!\n");$H:F.S;QB]Gw
exit(1);
7@Q3u+v:xE#^3VyLinux伊甸园论坛}r)[+A&Y0h
printf("send end to the server:%s\n",end);
j(_R4neQSLinux伊甸园论坛 W&]#Kl!F+M!X4Z{z
fclose(fp); :aGH3SA3Uu
}
W4ARR2MM5zYz~}         `eyj,H N eJ-n
close(connectsd); www.linuxeden.com5]$z&Qc~'o
close(listensd);
!B{&xWL&t'~www.linuxeden.comreturn 0;
I1IWhGW        ox}
kfMW
Id{7P


P)u"a(Eq想模拟个服务端循环发送图片,客户端接受并显示.但客户端生成的图片无法显示.请老鸟帮我看看啊.能帮我改改最好了.
~YL`X6V(d"o这个就是小弟的毕业设计课题啊``过几天就要交了``急啊!!

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



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





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



UID 191146
精华 0
积分 0(积分有什么用?)
帖子 2
阅读权限 10
注册 2007-4-21
状态 离线
发表于 2007-4-21 17:44  资料  个人空间  短消息  加为好友 
找了额``找了半天都找不到)r9^4D{'m!S3_

&?-O,e0o2^w-G        ]\p所以才来求助的

顶部
viking00000
新生入学
Rank: 1
注册用户



UID 196468
精华 0
积分 0(积分有什么用?)
帖子 1
阅读权限 10
注册 2007-5-16
状态 离线
发表于 2007-5-16 21:32  资料  个人空间  短消息  加为好友 
你的图像处理头文件是回事#include <SDL_image.h> f ve1z,B&FE ng
是自己定义的奥~~?Pwy        K*E1[4S~ C
不是应该//#include <SDL/SDL.h>欧,v3a"vM @SY
图形处理不怎么懂,编译不通过

顶部
 



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

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

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