ms93765555
新生入学

注册用户
UID 191146
精华
0
积分 0( 积分有什么用?)
帖子 2
阅读权限 10
注册 2007-4-21
状态 离线
|
|
|
求助!C编程问题!!
求助高手帮我看下下面的代码(乱了点) Linux伊甸园论坛y)cIH\-?ue^
//client[/COLOR]
5pD6N!w~!{N r8A#include <unistd.h>[/COLOR]
!jK(VC4a S#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]rzP9I8B*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&WqF)?;],D~0a HSDL_Rect dest;[/COLOR]
-f.z+v@T li m(k .N,Kb"a:j
[
image = IMG_Load(file);[/COLOR]
%n$F.RmBA6x jwww.linuxeden.comif ( image == NULL ) {[/COLOR]Linux伊甸园论坛-H'j0~c#C_
fprintf(stderr, "无法加载 %s: %s\n", file, SDL_GetError());[/COLOR]
i K(~xSw3Iaoreturn;[/COLOR]
x#t(ac!G d/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)ROint main(int argc,char **argv)[/COLOR]
#i;Bb5I AK&u{[/COLOR]yae6G3CKb5L/U
int sd;[/COLOR]
'jGss_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]@p4P x{8Schar buf[MAX_LEN];[/COLOR]
#n/a/|Cx$YFILE *fq;[/COLOR]
?8h1^WX/vchar ch;[/COLOR]
;yst)I R"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\#|ldsx,l
exit(1);[/COLOR]
(~5_`2hr3f8kBh}[/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#ST!W(}m"c.M5{3F@
if(h == NULL)[/COLOR]Linux伊甸园论坛%[i,U
sd
{[/COLOR]
p/~,v1E9UE%p8`,cprintf("Can't get hostname");[/COLOR]
-E~
TZJexit(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$~/b E$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]5RT-I.a!U uWa-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,m E^e6or7o-],}1L'h
{ [/COLOR]
v
J.W(LXi#Eu$qfq=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
S zwww.linuxeden.comwhile(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]
?7WYZ6fUuF5\"Q P1]{[/COLOR]
5vv&nEA9C)Swww.linuxeden.comprintf("Can't recieve file!\n");[/COLOR]
d v3i"i'H4P
eZ1Pwww.linuxeden.comexit(1);[/COLOR]
)?2GfPgu"H}[/COLOR]Linux伊甸园论坛v~"{T;{4y7o
uf"q
buf[rn]='\0';[/COLOR]'dMa,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伊甸园论坛+xY nUDq
break;[/COLOR]Linux伊甸园论坛
f6nqer$M4`)R2\
}[/COLOR]Z4K d2R'Z7L"k\C-^
if(rn != 0)[/COLOR]
T&gjB9[)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`ZuA {wif ( i==1 ) [/COLOR]
'I%{7Ktm:ELinux伊甸园论坛{ [/COLOR]
Xe5kE*rN)ciLinux伊甸园论坛i=2; [/COLOR]/d8A6uHG%y1@
break; [/COLOR]www.linuxeden.com%uNJp+hjv
} [/COLOR]
f2ZO0D$[']s`www.linuxeden.comif ( i==2 ) [/COLOR]
e]X/O|v6XJ{ [/COLOR](e-m6tC8m]!b Q
i=1; [/COLOR]
| |