MakeToday的专栏

蓝色忧郁

对pbsocket认识

global variables
WinSock   ws
event:open
ws = create WinSock    //提供常数和函数winsock_error
event:close
destroy ws

sServer = create SocketStream         //数据流传输模式:自动创建套接字
 sServer.bind(ulAddr,iPort)
sServer.listen(5)

tmpSocketNum = sServer.Accept(ulClientAddr, iClientPort) 自动创建一个套接字节

nsServer = create Socket           //这就用socket就行
nsServer.initsocket(SocketNum)     //初始化accept建立的socket

nsServer.CloseSocket()   这句是错误的,因为destroy时就自动调用了它
destroy nsServer
sServer.CloseSocket()    这句是错误的,因为destroy时就自动调用了它
destroy sServer

integer iEvent, iRet
iEvent = ws.FD_READ + ws.FD_WRITE + ws.FD_CLOSE + ws.FD_OOB+FD_ACCEPT+FD_CONNECT
sServer.WSAAsyncSelect(handle(this), 1024, iEvent) //事件邦定

ws.winsock_error
有用的函数:
ws.gethostname() 获得当前计算机名称
ws.gethostbyname() 根据名称返回其它信息
ws.GetHostByAddr()
h_name h_aliases[]
h_addrtype
h_length
h_addr-list[]

iEvent = ws.WSAGetSelectEvent(lparam)   判断是哪一个事件
iRet = ws.WSAGetSelectError(lparam)    
iErr = ws.WSAGetLastError()

sClient = create socketstream
sClient.WsConnect(iHostent.h_addr_list[1], iPort)
不用指定自身的端口,会自动使用一个端口的并告知服务器
sClient.Recv
sClient.send
destroy sClient

recv 只要产生fd_read事件就可以用recv来接收数据,注意用循坏来读取所有数据
send 注意可以直接使用send 或通过fd_write事件来发送数据若想通事件来发送
数据必须在准备好数据时调用wsaasyncselect这样马上会触发fd_write事件
fd_write只有在绶冲区中有空位时只产生,刚建立连接时会产生一次
wsaasyncselect只有最后一次的有用,先前的无效
 
阅读更多
个人分类: Power Builder
上一篇急急忙忙的测试一定会有一些问题发现不了的。
下一篇pfc_save 的误解
想对作者说点什么? 我来说一句

PB9实现的SOCKET通讯协议

2012年11月21日 2.42MB 下载

PB socket 实例

2012年08月23日 1.86MB 下载

PB 封装的SOCKET通讯组件

2013年06月21日 2.26MB 下载

pb socket实例

2015年03月28日 692KB 下载

PB使用SOCKET

2013年01月07日 161KB 下载

没有更多推荐了,返回首页

关闭
关闭