69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/un.h>
#include <unistd.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main(int argc, const char *argv[])
{
int server_sockfd, client_sockfd;
int server_len, client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
//unlink("/home/ght/server_socket");
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_port = 2000;
inet_pton(AF_INET, "127.0.0.1", &server_address.sin_addr);
//strcpy(server_address.sun_path, "/home/ght/server_socket");
server_len = sizeof(server_address);
printf("Port is: %d\n", server_address.sin_port);
if ((bind(server_sockfd, (struct sockaddr *)&server_address, server_len)) == -1)
{
perror("Error occured while binding");
exit(-1);
}
listen(server_sockfd, 5);
while (1)
{
/*
*char ch;
*char s[20];
*/
FILE *pFile = NULL;
char *s = NULL;
long size = 0;
if ((pFile = fopen("/home/ght/Pictures/ubuntu.gif", "r")) == NULL)
{
perror("Can't open the file");
exit(-1);
}
fseek(pFile, 0, SEEK_END);
size = ftell(pFile);
s = (char *)malloc(size);
fseek(pFile, 0, SEEK_SET);
fread(s, size, 1, pFile);
printf("Server waitting...\n");
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len);
write(client_sockfd, s, size);
/*
*while (read(client_sockfd, &ch, 1) == 1)
*{
* if (ch == '\0')
* {
* printf("\n");
* break;
* }
* printf("%c", ch);
*}
*/
//read(client_sockfd, s, 12);
//printf("Reading something from client:%s\n", s);
//ch++;
//write(client_sockfd, &ch, 1);
close(client_sockfd);
}
return 0;
}