質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

1788閲覧

rubyを用いたソケットとDB接続プログラミング

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2015/09/03 15:36

Rubyをもちいてサーバプログラムを行なっています。
Webに乗っていたソースコードを引用し,ソケットをもちいて接続を行うプログラムを書いたのですが、その間でデータベース接続を行い結果を取得してからその結果をクライアント側に返すようなプログラムにしようと思い、とりあえず第一歩としてクライアント側から送信を受理するとデータベースの中身を出力し、クライアントにはその後受信した内容をそのまま返却するプログラムを組みました。
しかし、なぜかクライアントに送信ができません。
以下にソースコードを掲載します

[Server.rb]
require 'mysql2'
require 'socket'

server = TCPServer.open(10001)

loop do
Thread.start(server.accept) do |client|
str = client.gets
#database out
client = Mysql2::Client.new(:host => 'localhost', :username => 'root',:passward => 'password')
query = %q{select * from テーブル名}
results = client.query(query)
results.each do |row|
puts "--------------------"
row.each do |key, value|
puts "#{key} => #{value}"
end
end

クライアントに返信

client.puts str client.close

end
end

client.puts str の位置をclient = Mysql::Client......
の前にすると実行がうまくいくことからデータベース接続の部分の処理が影響を与えているのではないかと思うのですが原因がわからない状況です。
どうかおたすけください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ブロック開始時はclientがネットワークのクライアントになっていますが、client = Mysql::Client...clientがDBの接続クライアントに上書きされてしまっています。なので、そのあとclientをネットワークのクライアントとして扱おうとしても動きません。

client = Mysql::Client...部分をdb_client = Mysql::Client...client.query(query)db_client.query(query)などと、clientとは違う変数名にすれば、うまくいくと思います。

投稿2015/09/03 21:37

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問