标题: 这个程序为什么没有建立起套接字
海天一色
实习记者
Rank: 5Rank: 5
注册用户



UID 49855
精华 0
积分 53(积分有什么用?)
帖子 447
阅读权限 10
注册 2003-7-7
状态 离线
发表于 2008-4-27 12:46  资料  个人空间  短消息  加为好友 
这个程序为什么没有建立起套接字

这是一个很简单的服务器程序,可是运行是只是显示server waiting  而没有生成套接字

URh
T*^P
server_socket(^aY.hZu%{
h

p{F'mc
VG3?D
VS9g|

#include <sys/types.h>5c$VB!afB*z:|t6y3k
#include <sys/socket.h>
5wh5Kp~!C%?#include <stdio.h>
        i _ {D oH3q@#include <sys/un.h>_3^8?D`
#include <unistd.h>
hx        F/j        ojS+]naY!R
ff NlV/kwww.linuxeden.comint  main  ()
^"s*zp3dt:_:ywww.linuxeden.comn$}]z,n6F%g)Cw3[
{Linux伊甸园论坛/eNEwv QD
ud

_3E'{s[#t;sn
-f7G2rc/q        t!|7J5U
    int server_sockfd,client_sockfd;
T({#S
h7qzl*MM!W

    int server_len,client_len;
m7q|)}B5z;\
qkwww.linuxeden.com
    struct sockaddr_un server_address;
8eE3~^Mo
DO
    struct sockaddr_un client_address;Linux伊甸园论坛 NZ'H,{T0C)\
   
9^3ZW$Z }6S"{8]        ki    unlink("server_socket");+j YG |        dE4UA
    server_sockfd = socket(AF_UNIX,SOCK_STREAM,0);
l%V#RzY2@%B;qVwww.linuxeden.com
/\(e
w2Q.Dg&Vim
]www.linuxeden.com
    server_address.sun_family = AF_UNIX;www.linuxeden.comFR!c![Ez6h
    strcpy(server_address.sun_path,"server_socket");
@hHaT,\W    server_len = sizeof(server_address);0Uq8z#D        wb
    bind(server_sockfd,(struct sockaddr *)&server_address,server_len);w0C%Fn2\
dH/w
A-yiN;z

    listen(server_sockfd,5);!X1?-|!q/v#j

d_q)U!f$N5mOwww.linuxeden.com    while(1)}Yg&o |^
    {
JZ2rFV      
R"`Wx/]},o
M
             char ch;"Z6F2V{3O        g5z
                    printf("server waiting\n");(d)W:c%J$]C
apt`fj

yEIy        _nO9G
             client_len=sizeof(client_address);
B,FoIn             client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len);Linux伊甸园论坛DM ?/T pzgry5q
             read(client_sockfd,&ch,1);Linux伊甸园论坛U6we }2i%c2vx
             ch++;/W3?W/i/F:C8B5]0q
             write(client_sockfd,&ch,1);
m&PB
[6aD8UG
             close(client_sockfd);
fl
VPq
            
U;{5nph lu0kY    }
"l&~2llTLinux伊甸园论坛}

顶部
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2008-4-27 19:42  资料  个人空间  短消息  加为好友 
描述不清啊





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
海天一色
实习记者
Rank: 5Rank: 5
注册用户



UID 49855
精华 0
积分 53(积分有什么用?)
帖子 447
阅读权限 10
注册 2003-7-7
状态 离线
发表于 2008-4-27 20:22  资料  个人空间  短消息  加为好友 
其实还有一个客户端的程序要和它相连,只是由于这个程序运行后没有建立server_socket套接字而使客户端不能与它连接并报错。
6P!jn/d8pr.q9{5l
@

2c
L)NYEX7z)iluLinux伊甸园论坛
书上说,这个程序运行后会建立一个名为server_socket的套接字用于客户端的连接时使用,可我运行后没有建立这个关键的套截字。就是用bind函数给新建的套接字起名为server_socket.

顶部
海天一色
实习记者
Rank: 5Rank: 5
注册用户



UID 49855
精华 0
积分 53(积分有什么用?)
帖子 447
阅读权限 10
注册 2003-7-7
状态 离线
发表于 2008-4-28 08:00  资料  个人空间  短消息  加为好友 
帮帮忙啊 ,先谢谢了

顶部
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2008-4-28 09:22  资料  个人空间  短消息  加为好友 
彻底被你搞晕了,书上怎么说的我不管,你了解程序每句的意思吗?





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
不容错过的IBM 集群技术资源汇总
dearvoid
版主
Rank: 7Rank: 7Rank: 7
Clark J. Wang



UID 26605
精华 26
积分 63(积分有什么用?)
帖子 4816
阅读权限 100
注册 2002-10-12
来自 Beijing, China
状态 离线
发表于 2008-4-28 09:27  资料  个人空间  短消息  加为好友 


QUOTE:
原帖由 海天一色 于 2008-4-27 20:22 发表
{a;G_$oEi其实还有一个客户端的程序要和它相连,只是由于这个程序运行后没有建立server_socket套接字而使客户端不能与它连接并报错。Linux伊甸园论坛8](@D(od-X#e*F

4rVp+wBy$iF书上说,这个程序运行后会建立一个名为server_socket的套接字用于客户端的连接时使用,可我运行后没有建立这个关键的套截字。就是用bind函数给新建的套接字起名为server_socket.

~_!c~P S可能你对 socket 的概念理解有问题, 事实上并不存在一个名为server_socket的套接字, socket 本质上是一个 file descriptor





'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间
顶部
不容错过的IBM 集群技术资源汇总
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2008-4-28 10:02  资料  个人空间  短消息  加为好友 
套接字通信首先服务器和客户端都创建一个用于通信的套接字,服务器这边创建的套接字用于监听,当客户端有连接过来的时候,用accept“再”分配一个套接字用于和该客户端通信。www.linuxeden.comS-wWA
K_@v

我不晓得你说的到底怎么没有建立套接字了,你也没有给任何程序运行的结果出来,让你怎样描述难道没有看置顶的帖子吗?





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
海天一色
实习记者
Rank: 5Rank: 5
注册用户



UID 49855
精华 0
积分 53(积分有什么用?)
帖子 447
阅读权限 10
注册 2003-7-7
状态 离线
发表于 2008-4-28 10:37  资料  个人空间  短消息  加为好友 
是啊,运行的结果就是不停的显示www.linuxeden.com
r R\v/nY8O'_:Jh

server waiting
X1ad%a
K fS J)e
server waiting
.o)^Z'g`!_6a4E1ywww.linuxeden.comserver waiting
        ~"tS;h I1i(s&e'R没有创建出server_socket的描述符,而这个描述符是用来与客户端通信的
+w]vH)QYLinux伊甸园论坛bind(server_sockfd,(struct sockaddr *)&server_address,server_len) 这句的意识是给套接字server_sockfd起名叫server_socket,用listen监听它,用accept“再”分配一个套接字用于和该客户端通信我的理解没有错吧。

顶部
不容错过的IBM 集群技术资源汇总
海天一色
实习记者
Rank: 5Rank: 5
注册用户



UID 49855
精华 0
积分 53(积分有什么用?)
帖子 447
阅读权限 10
注册 2003-7-7
状态 离线
发表于 2008-4-28 10:38  资料  个人空间  短消息  加为好友 
不行的话,我到家把linux下的结果贴上,单位没有linux。

顶部
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2008-4-28 10:49  资料  个人空间  短消息  加为好友 
。。。。。。accept一次就够了,你循环做什么?我就是觉得奇怪,你为什么说没有建立套接字,运行结果哪里让你觉得没有了?
az5@1X"r3e1M?你这样弄的话,客户端程序怎么弄的,读写完,套接字就销毁了,客户端还得重新连接,你循环了也没见的有啥用啊。,y6AG G} b^ gQ

0MGD
v-o5I5?www.linuxeden.com
[ 本帖最后由 flag 于 2008-4-28 10:54 编辑 ]





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
不容错过的IBM 集群技术资源汇总
 



当前时区 GMT+8, 现在时间是 2008-5-19 00:49

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.054157 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP