Socket编程问题

hbxtght 2011-11-26 10:26:59
我用c写了一个简单的server端,但运行的时候,我用另外一个java程序来连接它,但抛出了:java.net.ConnectException: Connection refused异常,我查了一下,发现指定的端口似乎并没有打开,server代码如下:

#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;
}

不知道是不是我写错了
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbxtght 2011-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 maoxing63570 的回复:]

server_address.sin_port = htons(2000);
[/Quote]
汗,原来是这样...我还没把socket编程看完,还没看到网络字节序....= =~谢谢啊
maoxing63570 2011-11-26
  • 打赏
  • 举报
回复
server_address.sin_port = htons(2000);
hbxtght 2011-11-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xxg1413 的回复:]

试试别的端口。
[/Quote]
不行额
寻找自我 2011-11-26
  • 打赏
  • 举报
回复
试试别的端口。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧