linux客户端服务端tcp通信
时间: 2023-04-21 20:04:37 浏览: 63
Linux客户端和服务端之间的TCP通信是一种基于网络协议的通信方式。它通过TCP协议建立连接,实现数据的传输和交换。在这种通信方式中,客户端和服务端分别扮演发送方和接收方的角色,通过网络传输数据,实现信息的交互和共享。这种通信方式具有高效、稳定、可靠等优点,被广泛应用于各种网络应用程序中。
相关问题
Linux tcp通过服务端给客户端发数据
在 Linux 中,TCP 通信基于套接字(socket)实现。要通过服务端给客户端发数据,需要以下步骤:
1. 创建服务端的套接字,指定 IP 地址和端口号,并将其绑定到套接字上。
2. 监听该套接字,等待客户端的连接请求。
3. 一旦有客户端连接请求,服务端接受连接请求,创建新的套接字与客户端进行通信。
4. 服务端通过新的套接字向客户端发送数据,可以使用 write() 函数。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 8080
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int addrlen = sizeof(address);
char *hello_msg = "Hello from server!";
// 创建服务端套接字
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror("socket failed");
exit(EXIT_FAILURE);
}
// 给套接字绑定 IP 地址和端口号
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);
if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
perror("bind failed");
exit(EXIT_FAILURE);
}
// 监听套接字,等待客户端连接
if (listen(server_fd, 3) < 0) {
perror("listen failed");
exit(EXIT_FAILURE);
}
// 接受客户端连接请求,创建新的套接字
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
perror("accept failed");
exit(EXIT_FAILURE);
}
// 向客户端发送数据
write(new_socket, hello_msg, strlen(hello_msg));
printf("Hello message sent\n");
return 0;
}
```
在上面的示例代码中,服务端首先创建套接字并绑定 IP 地址和端口号,然后监听该套接字。当有客户端连接时,服务端接受连接请求,创建新的套接字与客户端进行通信,最后向客户端发送数据。注意,这里使用了 write() 函数来发送数据。
linux+python实现tcp通信
下面是一个简单的 Python 程序,用于在 Linux 上实现 TCP 通信:
1. 服务端
```python
import socket
# 创建一个 TCP/IP 套接字对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定套接字到指定的端口
server_address = ('localhost', 10000)
sock.bind(server_address)
# 开始监听客户端请求
sock.listen(1)
while True:
# 等待客户端连接
connection, client_address = sock.accept()
print('Connection from', client_address)
# 接收来自客户端的数据
data = connection.recv(1024)
if data:
print('Received', repr(data))
# 回传数据给客户端
connection.sendall(data)
# 关闭客户端连接
connection.close()
```
2. 客户端
```python
import socket
# 创建一个 TCP/IP 套接字对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务端
server_address = ('localhost', 10000)
sock.connect(server_address)
try:
# 发送数据给服务端
message = 'Hello, world!'
sock.sendall(message.encode('utf-8'))
# 接收来自服务端的数据
data = sock.recv(1024)
print('Received', repr(data))
finally:
# 关闭套接字
sock.close()
```
以上代码实现了一个简单的 TCP 通信,服务端和客户端都只是接收一条数据并回传相同的数据。在实际应用中,可以根据实际需求进行修改和扩展。