首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在同一连接中向TCP服务器发送多条消息

在同一连接中向TCP服务器发送多条消息
EN

Stack Overflow用户
提问于 2015-04-01 18:37:24
回答 1查看 2.3K关注 0票数 1

我用Java创建了一个TCP服务器,用Ruby创建了一个TCP客户机。问题是我不能在同一个连接中发送超过一个消息,只有第一个消息被发送,而另一个消息没有发送。

以下是Java代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.roun512.tcpserver;

import java.io.*;
import java.net.*;

public class Program {


    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {

        String clientSentence;
        String capitalizedSentence;
        ServerSocket Socket = new ServerSocket(6789);

        while(true)
        {
            Socket connection = Socket.accept();
            BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            DataOutputStream outToClient = new DataOutputStream(connection.getOutputStream());
            clientSentence = inFromClient.readLine();
            System.out.println(clientSentence);
            capitalizedSentence = clientSentence + '\n';
            outToClient.writeBytes(capitalizedSentence);
            System.out.println("Sent msg");
        }
    }
}

这是客户端代码

Client.rb

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require 'socket'
class Client

        def initialize()
                server = TCPSocket.open("127.0.0.1", 6789)
                if server.nil?
                        puts "error"
                else
                        puts "connected"
                end
                server.puts("Hello\r\n")
                sleep 2
                server.puts("There\r\n")
                server.close
        end
end
Client.new()

我只收到Hello。我尝试过许多其他的方法,但都没有奏效。

因此,我的问题是如何在一个连接中发送多条消息,任何帮助都将不胜感激:)

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-02 01:32:49

Socket.accept()在读取第一行后等待新连接。尝试以下几点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) throws Exception {

    String clientSentence;
    String capitalizedSentence;
    ServerSocket Socket = new ServerSocket(6789);

    while (true)
    {
        Socket connection = Socket.accept();
        while(true)
        {
            BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            DataOutputStream outToClient = new DataOutputStream(connection.getOutputStream());
            clientSentence = inFromClient.readLine();
            System.out.println(clientSentence);
            capitalizedSentence = clientSentence + '\n';
            outToClient.writeBytes(capitalizedSentence);
            System.out.println("Sent msg");
        } 
    }
}

如果工作正常,请将while (true)更改为有意义的条件,在工作完成后不要关闭连接。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29404133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文