TCP输出端

package day23;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class TCPClient1 {

	public static void main(String[] args) throws Exception {
		
		InetAddress address = InetAddress.getLocalHost();
		int port = 5555;
		//创建通信点,客户端,
		Socket s = new Socket(address, port);
		//通过方法获取网络输出流
		OutputStream os = s.getOutputStream();
		//将字节输出流转变成字符输出流
		PrintWriter pw = new PrintWriter(os, true);
		
		//os.write("你好".getBytes());
		pw.println("你好");
		//接收
		InputStream is = s.getInputStream();
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);
		
		/*byte[] buf = new byte[1024];
		
		int len = is.read(buf);
		String str = new String(buf,0,len);*/
		String str = br.readLine();
		System.out.println(str);
		//将流对象关闭
		os.close();
		s.close();
		
	}

}
### 如何使用 Qt 实现 TCP 服务器功能 在 Qt 中实现 TCP 服务器的主要类包括 `QTcpServer` 和 `QTcpSocket`,这些类提供了创建和管理 TCP 连接所需的核心功能[^1]。以下是通过具体代码示例展示如何构建一个简单的 TCP 服务器。 #### 创建 QTcpServer 对象并监听连接请求 为了启动一个 TCP 服务器,需要实例化 `QTcpServer` 并调用其方法来绑定到特定地址和口。当有新的客户尝试建立连接时,会触发信号 `newConnection()`,可以通过槽函数处理该事件[^2]。 ```cpp #include <QTcpServer> #include <QTcpSocket> class TcpServer : public QObject { Q_OBJECT public: explicit TcpServer(QObject *parent = nullptr); private slots: void new_client(); // 处理新连接的槽函数 }; ``` #### 初始化服务器逻辑 在构造函数中初始化服务器对象,并设置它去侦听指定 IP 地址上的某个口号。如果成功,则可以等待传入的数据包;否则显示错误消息。 ```cpp TcpServer::TcpServer(QObject *parent) : QObject(parent), m_server(new QTcpServer(this)) { if (!m_server->listen(QHostAddress::Any, 8080)) { // 绑定至本地所有接口上运行于8080口的服务 qDebug() << "无法启动服务器:" << m_server->errorString(); return; } connect(m_server, &QTcpServer::newConnection, this, &TcpServer::new_client); // 当检测到来自外部设备的新链接时发出通知 } ``` 上述代码片段展示了如何配置基本参数以及定义响应机制以便接收来自远程主机的信息流[^3]。 #### 接收数据与发送反馈 每当有一个客户机接入系统之后,都会生成一个新的套接字用于单独交流目的。下面是如何读取从这个特殊通道传递过来的内容再回送回去作为回应的例子: ```cpp void TcpServer::new_client() { while (m_server->hasPendingConnections()) { QTcpSocket* client_conn = m_server->nextPendingConnection(); connect(client_conn,&QTcpSocket::readyRead,[=]()mutable{ QString message = QString::fromUtf8(client_conn->readAll()); qDebug()<<"收到的消息:"<<message; QByteArray reply="已收到您的信息"; client_conn->write(reply); }); connect(client_conn,SIGNAL(disconnected()),client_conn,SLOT(deleteLater())); } } ``` 此部分实现了每当前台界面发现未决关联存在之时即刻接纳它们成为正式成员之一的过程,并且对于每一个这样的实体都建立了相应的输入/输出管道关系链路结构图谱[^4]。 ### 结论 以上就是利用 C++ 编程语言配合跨平台图形用户界面开发框架——Qt 来达成基础版次世代互联网协议栈下层应用层面操作指南全文档结束标志符。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值