TCP通信的客户端和服务端

TCP通信的客户端:向服务器发送连接请求给服务器发送数据,读取服务器回写 的数据

表示客户端的类:

java.nei.Socket此类实现客户端套接字,套接字是两台计算机间的通信端点 套接字:包括了IP地址和端口号的网络单位

构造方法:socket(String host, int port)创建一个流套接字并将其连接到在指定主机上的指定端口号

参数: String host:服务器主机的名称/服务器的IP地址

int port:服务器的端口号

成员方法:

OutputStream getOutputStream() 返回此套接字的输出流

InputStream getInputStream()返回此套接字的输入流

viod close ()关闭此套接字

实现步骤:

1、创建一个客户端对象socket,构造方法绑定方法服务器的IP地址和端口号

2、使用socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象

3、使用网络字节输出流OutputStream对象中的方法write,給服务器发送数据

4、使用socket对象中的方法getInputStream()对象,获取网络字节输入流InputStream对象

5、使用网络字节输入流InputStream对象中的方法read,读取服务器 。回写的数据

6、释放资源

注意:1、客户端和服务器进行交互,必须使用socket中提供的网络流,不能使用自己创建的流对象

2、当我们创建客户端对象socket的时候,就回去请求服务器和客户端经过三次握手建立连接通路这时如果服务器没有启动那么就会抛出异常,如果服务器已经启动,那么就可以经行交互了。

TCP通信的服务器端:接收客户端的请求,读取客户端发送的数据,给客户端 ,回写 数据

表示服务器的类:java.net.ServerSocket此类实现服务器套接字

构造方法:ServerSocket(int port)创建绑定到特定端口的服务器套接字,服务器必须明确一件事情,必须知道是哪个客户端请求的服务器所以可以使用accpet方法获取到请求的客户端对象socket

成员方法:Socket accpet()侦听并接受到此套接字的连接

服务器的实现步骤:

1、创建一个服务器对象ServerSocket和系统要指定的端口号

2、、使用ServerScoket对象中的方法accpet,获取到请求的客户端对象socket

3、使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象

4、使用网络字节输入流InputStream对象中的方法read,读取客户端发送的数据

5、使用socket对象中的方法getOutputStream()获取网络字节输出流OutputStream对象

6、使用网络字节输入流OutputStream对象中的方法write,給客户端回写数据

7、释放资源

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!以下是一个简单的C++ Qt TCP通信客户端服务端代码示例: 服务端代码: ```cpp #include <QTcpServer> #include <QTcpSocket> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QTcpServer server; server.listen(QHostAddress::Any, 1234); // 监听所有地址的1234端口 QObject::connect(&server, &QTcpServer::newConnection, [&]() { QTcpSocket *socket = server.nextPendingConnection(); QObject::connect(socket, &QTcpSocket::readyRead, [&]() { QByteArray data = socket->readAll(); qDebug() << "接收到客户端消息:" << data; socket->write("服务器已接收到消息"); socket->flush(); }); }); return a.exec(); } ``` 客户端代码: ```cpp #include <QTcpSocket> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QTcpSocket socket; socket.connectToHost("localhost", 1234); // 连接到本地主机的1234端口 QObject::connect(&socket, &QTcpSocket::connected, [&]() { qDebug() << "已连接到服务器"; socket.write("Hello Server"); socket.flush(); }); QObject::connect(&socket, &QTcpSocket::readyRead, [&]() { QByteArray data = socket.readAll(); qDebug() << "接收到服务器消息:" << data; socket.close(); }); return a.exec(); } ``` 这个示例中,服务端监听在1234端口,客户端连接到本地主机的1234端口。当客户端连接成功后,客户端会发送"Hello Server"的消息给服务端服务端接收到消息后会回复"服务器已接收到消息"给客户端客户端接收到回复后会打印出来并关闭连接。 你可以根据需要修改代码来满足你的具体需求。希望对你有帮助!如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值