当前位置: 技术问答>linux和unix
socket下文件传输问题
来源: 互联网 发布时间:2017-05-12
本文导语: 哎,颓废了好几年了,最近学习了点网络编程,遇到了一些问题,在这向大家请教下。 程序的功能是:客户端从本地读取文件,然后通过socket传输到服务器端,服务器端接收后也存到本地的一个文本文件中。 出现的...
哎,颓废了好几年了,最近学习了点网络编程,遇到了一些问题,在这向大家请教下。
程序的功能是:客户端从本地读取文件,然后通过socket传输到服务器端,服务器端接收后也存到本地的一个文本文件中。
出现的问题:服务器能够接收到客户端发来的文件信息到服务器buffer中,也可把服务器接收的信息通过printf出来,但是却不能通过fwrite写到本地文本文件中,还望大家给点意见。代码如下:
client.c
server.c
程序的功能是:客户端从本地读取文件,然后通过socket传输到服务器端,服务器端接收后也存到本地的一个文本文件中。
出现的问题:服务器能够接收到客户端发来的文件信息到服务器buffer中,也可把服务器接收的信息通过printf出来,但是却不能通过fwrite写到本地文本文件中,还望大家给点意见。代码如下:
client.c
/**
*author:Debris
*time :2014.03
*/
#include
#include
#include
#include
#include
#include
#include
#define SERVER_PORT 8421
#define BUFFER_SIZE 2*1024
int main(int argc,char **argv[])
{
int sockfd;
char buffer[BUFFER_SIZE];
int len;
FILE *fp;
int n;
struct sockaddr_in server_addr;
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htons(INADDR_ANY);
server_addr.sin_port = htons(SERVER_PORT);
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd == -1)
{
printf("create socket errorn");
exit(1);
}
if(connect(sockfd,(struct sockaddr*)&server_addr,sizeof(server_addr)) 0)
printf("send successn");
else
printf("send errorn");
bzero(buffer,BUFFER_SIZE);
scanf("%s",&buffer);
}
fclose(fp);
close(sockfd);
return 0;
}
server.c
/**
*author:Debris
*time :2014.03
*/
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVER_PORT 8421
#define BUFFER_SIZE 1024
int main(int argc,char **argv[])
{
int sockfd;
int connfd;
FILE *fp;
char buffer[BUFFER_SIZE];
socklen_t len;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(SERVER_PORT);
sockfd = socket(AF_INET,SOCK_STREAM,0);
if(sockfd == -1)
{
printf("create socket errorn");
exit(1);
}
//else
//printf("aaaaan");
if(bind(sockfd,(struct sockaddr *)&server_addr,sizeof(server_addr)) 0)
{
printf("the data is:%sn",buffer);
}
}
死循环,程序没有机会调用fclose,当调用fclose时才会写入到文件并保存