• 締切済み

VB.NetのWinsockについて

VB6.0の時は LocalPortとRemotePortを別々に設定できましたが VB.Netの場合LocalPortとRemotePortを別々に設定するのはどうすればよいのえしょうか? 'リモートホストと接続します。 objTcpClient = New Net.Sockets.TcpClient() 'objTcpClient.Connect("localhost", intPortNo) objTcpClient.Connect("127.0.0.1",5000) '<<リモートポート                          '<<ローカルはどう設定すればよいの? へんな質問ですがよろしくお願いいたします。

みんなの回答

回答No.1

こんな感じのコードを client.Close()にブレークポイントを仕掛けた上で 実行した。 http://ideone.com/Ngrxh その状態で netstat -a -b -n を実行した時、その中に TCP 192.168.3.2:50000 74.125.235.83:80 ESTABLISHED [Q7527636.exe] が存在し、また、プログラム終了後しばらくしたらTIME_WAITじゃなくなって上記のアドレスに関する情報が消えた、って回答でOKか? #なんか、WireSharkとかnetstatにlocalhostからlocalhostへの情報って出てこないっぽいんだよね。 #俺は最初127.0.0.1:80をローカルにしてwww.google.comにアクセスしようとしてた馬鹿です。

manmosu_tarou
質問者

お礼

参考になりました。 ありがとうございます。

関連するQ&A

  • VB.netのタイムアウト方法について

    こんばんわ。 vb.netのTCP接続に関する質問になります。 Dim tcp_conect As New System.Net.Sockets.TcpClient(host, port) これを使用して接続しようと思うのですが、 エラー時やサーバに接続できないときのタイムアウト時間が長すぎるため、設定したいのですが、どのようにすればよいでしょうか? サンプルコードかURLのご紹介をお願いいたします。 もちろんこれ以外の方法でも構いません。 よろしくお願いいたします。 環境はWin7・vb.net2012 Expressになります。

  • VB6.0 Winsockについての質問です。

    VB6.0 Winsockについての質問です。 はじめまして。 現在、VB6.0を使用してTCP通信にてテキストデータを送るプログラムを作成しています。 機能としては全て完成しているのですが、現在再接続ができないじょうたいです。 PC上にサーバプログラムとクライアントプログラムを立ち上げます。 localport は 0 として設定しており、 host は、localhostとしています。 remortportは5000を設定しております。 現段階で発生している問題として、 クライアント側にてConnectイベントをさせ、 サーバ側にて、ConnectionRequestイベントが発生します。 クライアント側にて、Closeイベントは発生させ、 サーバー側も切断を確認します。 この状態でクライアント側から再度Connectイベントを発生させても サーバ側にてConnectionRequestイベントが発生しません。 サーバ側のプログラム一度終了させ、もう一度起動させると また、接続が可能になります。 もう、2日以上悩んでいるのですが、、、解決できません。 どなたか、詳しい方がいらっしゃいましたらご教授お願いします。

  • Winsockで、localhostに接続時、10061エラー、コンピューター名ならOk

    VB6.0(SP5)で、TCP/IPの通信を作成しています 開発環境は、Windows2000(SP4) 実行環境は、WindowsXP Home(sp2)です Winsockコントロールに以下の値を設定していますが接続時にエラー:WSAECONNREFUSED 10061 Connection refusedを返します .LocalPort = 0 .RemoteHost = "localhost" .RemotePort = 2010 .Connect (.RemoteHost = "127.0.0.1"でも同じです) しかし、 .RemoteHost = "192.168.0.110" 自身のIPアドレス .RemoteHost = "COMP01" 自身のコンピューター名 を指定した場合エラーとなりません 何かアドバイスを頂ければお願いします

  • vb.netのプロパティの使い方について

    こんにちわ! vb.netのプロパティの使い方がわからず困っています。 具体的にはTCPクライアント接続を行い、データ送信前に現在接続を行っているかチェックを行いたいです。 作ったのは↓ Public Class Form1 'ボタンを押したら Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim tcp_conect As New System.Net.Sockets.TcpClient 'ソケット作成 Dim net_stream As System.Net.Sockets.NetworkStream = Nothing 'ストリーム取得 Dim send_bytes As Byte() = {&HFF, &H0} '送信データ tcp_conect.Connect("192.168.1.1", "2000") 'ソケット接続 net_stream = tcp_conect.GetStream() 'ソケットストリーム取得 If tcp_conect.conected = True Then 'エラーが出てしまう。 net_stream.Write(send_bytes, 0, send_bytes.Length) 'データ送信 End If tcp_conect.Close() 'ソケット閉じる End Sub End Class 'プロパティ Public Class TcpClient Dim _conect_test As Boolean Public ReadOnly Property Connected As Boolean Get Stop Return _conect_test End Get End Property End Class これでテストをしたいのですが、プロパティが実行されません。 もしかしてプロパティの使い方がそもそも違うのかもしれないのですが、、、 アドバイスのほどよろしくお願いいたします。 ちなみに使用しているのは windows7 Visual Studio Express 2012です。

  • クラス内に自作のイベントを定義したい VB2005

    VB2005を使っています。 クラス内に自作のイベントを定義したいのですがどうすればよいのでしょうか? 非同期のソケットから帰ってきた場合に発生させるイベントです。 System.Net.Sockets.TcpClient System.Net.Sockets.NetworkStream 以下のようにループでなくイベントで処理させたいです。 Do If .DataAvailable Then             ... End If My.Application.DoEvents() Loop

  • 現在WINSOCKコントロールを用いて通信プログラムを作成しています

    現在WINSOCKコントロールを用いて通信プログラムを作成しています サーバ側の設定が IP:192.168.1.10 Port:10000のとき、 Winsock.state = 7(Listen状態) クライアント側で Winsock.Close Winsock.RemoteHost = "192.168.1.10" Winsock.RemotePort = 10000 Winsock.Connect で実行したときにエラー10061で返ってきます。 NETSTAT -anで他にこのポートを使用ものは有りませんでした どのようにすればエラーが回避できますでしょうか?

  • WinSockを使ってのプリンタ接続・データ送信

    現在LANで接続されたプリンタに文字列を印字させるプログラムを作成しているのですが、プリンタ側のIPアドレス、使用するポート(今回は1024という指定があったのでそれに設定)を設定し、印字処理をはしらせたのですが、そこでエラーが発生してしまいます。簡略化していますが、プログラムは Private sckWinsock As Winsock Set sckWinsock = Winsock1 sckWinsock.Protocol = sckTCPProtocol sckWinsock.RemoteHost = "192.168.0.***" sckWinsock.RemotePort = 1024 sckWinsock.LocalPort = 0 sckWinsock.Connect strData = "テスト印字" sckWinsock.SendData strData sckWinsock.Close エラーは sckWinsock.SendData strData ここで発生し、『指定したトランザクションまたは要求のプロトコルまたは接続状態に問題があります。』とでます。 PINGはちゃんと通りますし、プリンタ設定にあるテスト印字は問題なく機能するので、プリンタとの接続がまずいとは思えないのですが・・・ WinSockを使うのは初めてなので勝手がわからなく苦戦中です どなたかわかる方、お返事お待ちしています

  • UdpClient 送信元のIPアドレスの指定方法

    System.Net.Sockets.UdpClient クラスを使用してのソケット通信を行っています。 プログラムでは、送信元のポート番号のみ引数に渡すだけで それまで順調に通信は行っていたのですが //localPort=送信元ポート番号 fUdp = new System.Net.Sockets.UdpClient(localPort); 新たに ネットワークインターフェースカードを追加して、IPアドレスを後から 挿した方に変更してから、通信がうまく動作しなくなってしまいました。 おそらくは、IPアドレスが複数ある為に、うまく動かないのかな?と思い 送信元のポート番号だけでなく、送信元のIPアドレスも合わせて指定してやれば 直ると思い調べていたのですが、送信元IPアドレスの指定する方法が判りません AddressFamily で指定するのかなとも思ったのですが、ヘルプを見てもよくわからずに 行き詰ってしまいました。 もしよろしければ、送信元のIPアドレスを指定する方法をご教授ねがえませんでしょうか

  • VBからPC-ANYWHEREの実行

    どなたかご存知の方いらっしゃいましたら教えて下さい。 VISUAL BASICからSYMANTECのPC-ANYWHEREを実行するにはどうしたら良いのでしょうか。 具体的にやりたいこととしては、 (1)VBからリモートオブジェクトを作成し、既存のホストに接続 (2)リモート側からホスト側へ指定したフォルダにテキストファイルを送信 (3)送信完了後、ホストにインストール済みのプログラムを実行し、処理を行う。 (4)ホスト側のプログラムからは処理成否のログデータが吐き出されるので、それをリモート端末にコピー。 (5)接続を切る。 以上のようなことです。 ちなみにPC-ANYWHEREのバージョンは10.0、VBは5.0SP3です。 よろしくお願い致します。

  • VB6のwinsockでconnectできない

    socketでconnectすると、sckclosingとなって通信できない。 機械との通信プログラムをつくるため、インターネットから以下のようなサンプルを取って、同一コンピュータ、または異なるコンピュータ間で通信しようとした(一部省略、改変)が、stateが8となってしまいます。socketを使うのは初めてで、皆目見当がつきません。よろしくお願いします。 サーバー側 Private Sub Form_Load() Winsock1.LocalPort = 1001 Winsock1.Listen -------- End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim dat As String, ans As String Dim n As Integer Winsock1.GetData dat Text1.Text = dat Winsock1.SendData "わかりません" End Sub Private Sub Form_Load() Text1.Text = "abc" (正しいコンピュータ名を入れた) Winsock1.Close LabCon.Caption = "Closed": LabCon.BackColor = vbWhite End Sub クライアント側 Private Sub Command1_Click() Winsock1.Close Winsock1.RemoteHost = Text1.Text Winsock1.RemotePort = 1001 'ポート番号設定 Winsock1.Connect Do While (Winsock1.State <> sckConnected) LabCon.Caption = Winsock1.State DoEvents Loop End Sub クライアントでcommand1ボタンをクリックすると最初はstateが0、ループに入ると8となって出られません。WindowsXP、Vista共に同じ結果でした。

専門家に質問してみよう