ActiveBasic インターネットを通じてソフト間で通信する
AB 4.23.00を使用しています。
今回、ネットワークのプログラムの勉強を始め、とりあえず、
ネットワークを通して、ソフト間で簡単なチャットが出来るものを作ってみようと思い、作り始めました。
以前、CreateMailslot関数などで出来ると思い、探し回ったのですが、どうしても出来ないので、質問させていただいたところ、『それでは出来ない』とのこと(http://oshiete1.goo.ne.jp/qa5833366.html)だったので、
新たな方法を探していたところ、ソケットというものを使えば出来るというようなことが書かれているページを見つけ、早速参考にさせていただいています。
ですが、どうも、構造というか、その辺がよく分かっていないので、
どこにどの値をどう入れればいいのか・・・などがよく分かりません。
送信用のプログラムは、おそらく書けていると思いますが(一応貼らせていただきます)、
受信用のプログラムでちょっとつまずいています。
connect関数の接続先はどう指定すればいいのか、ということです。
ご存知の方、いらっしゃいましたら、ご教授の方、お願いします。
【送信用】
#console
#include <api_winsock2.sbp>
Declare Function bind Lib "wsock32.dll" (s As Long,ByRef sName As sockaddr,namelen As Long) As Long
Declare Function listen Lib "wsock32.dll" (s As Long,backlog As Long) As Long
Declare Function accept Lib "wsock32.dll" (s As Long,ByRef addr As sockaddr,ByRef addrlen As Long) As Long
Dim wsaData As WSADATA
WSAStartup(MAKELONG(2,0),wsaData)
Print "WSAStartup--->"+Date$()+" "+Time$()
Dim s As DWord
s=socket(AF_INET,SOCK_STREAM,0)
If s=0 Then
Print "Error-------->Cannot Socket Create"
Sleep(-1)
End If
Dim sar As SOCKADDR
With sar
.sa_family=AF_INET
End With
If bind(s,sar,Len(sar))<>0 Then
Print "Error-------->BIND ERROR"
Sleep(-1)
End If
Dim sarlen As Long
Dim news As DWord
listen(s,128)
news=accept(s,sar,sarlen)
Dim buf[256] As Byte
recv(news,buf,256,0)
send(news,"HELLO",lstrlen("HELLO"),0)
closesocket(s)
closesocket(news)
Print "SENDED"
Sleep(-1)
-----------------------------------------------------------------
【受信用(途中まで)】
#console
#include <api_winsock2.sbp>
Declare Function bind Lib "wsock32.dll" (s As Long,ByRef sName As sockaddr,namelen As Long) As Long
Declare Function listen Lib "wsock32.dll" (s As Long,backlog As Long) As Long
Declare Function accept Lib "wsock32.dll" (s As Long,ByRef addr As sockaddr,ByRef addrlen As Long) As Long
Dim wsaData As WSADATA
WSAStartup(MAKELONG(2,0),wsaData)
Print "WSAStartup--->"+Date$()+" "+Time$()
Dim s As DWord
s=socket(AF_INET,SOCK_STREAM,0)
If s=0 Then
Print "Error-------->Cannot Socket Create"
Sleep(-1)
End If
Dim sar As SOCKADDR
With sar
.sa_family=AF_INET
End With
If bind(s,sar,Len(sar))<>0 Then
Print "Error-------->BIND ERROR"
Sleep(-1)
End If
Dim sock_sin As SOCKADDR_IN
With sock_sin
.sin_family=AF_INET
End With
If connect(s,sock_sin,Len(sock_sin))<>0 Then
Print "Error-------->connect ERROR"
Sleep(-1)
End If
お礼
駄目みたいですね。 因みにwebsocketの設定は有効でした、訂正します。