server.c:
服务器
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define MAXSIZE 100
int main()
{
FILE *fd=fopen("Sunset.jpg","rb");
int server_sockfd,client_sockfd;
int server_len,client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
server_sockfd=socket(AF_INET,SOCK_STREAM,0);
server_address.sin_family=AF_INET;
server_address.sin_addr.s_addr=inet_addr("127.0.0.1");
server_address.sin_port=9734;
server_len=sizeof(server_address);
bind(server_sockfd,(struct sockaddr *)&server_address,server_len);
listen(server_sockfd,5);
char ch[MAXSIZE];
<pre name="code" class="cpp">客户端
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100
int main()
{
int sockfd,len;
struct sockaddr_in address;
int result;
FILE*fd= fopen("sunrise.jpg","wb");
char recvs[MAXSIZE];
sockfd=socket(AF_INET,SOCK_STREAM,0);
address.sin_family=AF_INET;
address.sin_addr.s_addr=inet_addr("127.0.0.1");
address.sin_port=9734;
len=sizeof(address);
result=connect(sockfd,(struct sockaddr *)&address,len);
if(result==-1){
perror("oops:client1");
exit(1);
}
int count;
while(1){
int count;
count=read(sockfd,recvs,MAXSIZE);
if(count==0)
break;
fwrite(recvs,1,MAXSIZE,fd);
}
close(sockfd);
fclose(fd);
return 0;
}
client_len=sizeof(client_address); client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len); while(!feof(fd)){ fread(ch,1,MAXSIZE,fd); write(client_sockfd,ch,MAXSIZE);} close(client_sockfd); fclose(fd); return 0;}
client.c: