ubuntu使用Vscode进行实现TCP编程
在Ubuntu上使用VSCode实现TCP编程的完整流程包括安装必要的工具、编写TCP客户端和服务器代码、编译和运行程序。这里将介绍如何使用Python或C语言编写简单的TCP客户端和服务器,并在VSCode上运行。
1. 安装必要的工具
在Ubuntu上进行TCP编程前,需要确保已安装好VSCode、Python或GCC编译器(根据你使用的编程语言)。以下是相关工具的安装步骤。
1.1 安装 VSCode
如果还没有安装VSCode,可以通过以下命令进行安装:
sudo apt update
sudo apt install code
1.2 安装 Python3
如果计划使用Python进行TCP编程,通常Ubuntu已经自带Python3,可以通过以下命令确认是否已安装:
python3 --version
如果未安装,使用以下命令安装Python3:
sudo apt install python3
1.3 安装 GCC(用于 C/C++ TCP 编程)
如果计划使用C语言编写TCP程序,需要安装GCC编译器:
sudo apt update
sudo apt install build-essential
2. 安装 VSCode 扩展
打开VSCode后,安装相关的扩展,以支持Python或C/C++编程。
2.1 安装 Python 扩展
在VSCode中:
- 按下
Ctrl+Shift+P
,输入ext install ms-python.python
,回车安装Python扩展。 - 安装完成后,VSCode将能够解析Python代码,提供语法高亮、调试和代码补全功能。
2.2 安装 C/C++ 扩展
- 按下
Ctrl+Shift+P
,输入ext install ms-vscode.cpptools
,回车安装C/C++扩展。 - 安装完成后,VSCode将支持C/C++代码的语法检查和调试。
3. 编写 TCP 客户端和服务器程序
3.1 Python 实现
TCP 服务器(TCPServer.py
)
from socket import *
# 设置服务器端口
serverPort = 12000
# 创建TCP套接字
serverSocket = socket(AF_INET, SOCK_STREAM)
# 绑定套接字到服务器IP和端口
serverSocket.bind(('', serverPort))
# 开始监听客户端连接,最多允许1个客户端连接
serverSocket.listen(1)
# 提示服务器已准备好接收连接
print('The server is ready to receive')
# 无限循环,等待客户端连接
while True:
# 接受客户端连接请求
connectionSocket, addr = serverSocket.accept()
# 接收客户端发送的数据
sentence = connectionSocket.recv(1024).decode()
# 将收到的消息转换为大写
capitalizedSentence = sentence.upper()
# 将处理后的消息发送回客户端
connectionSocket.send(capitalizedSentence.encode())
# 关闭连接套接字
connectionSocket.close()
TCP 客户端(TCPClient.py
)
from socket import *
# 设置服务器地址和端口
serverName = 'localhost' # 本地服务器
serverPort = 12000
# 创建TCP套接字
clientSocket = socket(AF_INET, SOCK_STREAM)
# 连接到服务器
clientSocket.connect((serverName, serverPort))
# 获取用户输入
sentence = input('Input lowercase sentence: ')
# 发送消息到服务器
clientSocket.send(sentence.encode())
# 接收服务器的响应
modifiedSentence = clientSocket.recv(1024)
print('From Server:', modifiedSentence.decode())
# 关闭套接字
clientSocket.close()
3.2 C 语言实现
TCP 服务器(tcp_server.c
)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 12000
#define BUFFER_SIZE 1024
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int addrlen = sizeof(address);
char buffer[BUFFER_SIZE] = {0};
char *response;
// 创建TCP套接字
server_fd = socket(AF_INET, SOCK_STREAM, 0);
if (server_fd == 0) {
perror("Socket failed");
exit(EXIT_FAILURE);
}
// 绑定套接字到指定端口
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");
close(server_fd);
exit(EXIT_FAILURE);
}
// 开始监听
if (listen(server_fd, 3) < 0) {
perror("Listen failed");
close(server_fd);
exit(EXIT_FAILURE);
}
printf("Server is ready to receive\n");
// 接受客户端连接
new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen);
if (new_socket < 0) {
perror("Accept failed");
close(server_fd);
exit(EXIT_FAILURE);
}
// 读取客户端消息
read(new_socket, buffer, BUFFER_SIZE);
printf("Received: %s\n", buffer);
// 将消息转换为大写并发送回客户端
for (int i = 0; i < strlen(buffer); i++) {
buffer[i] = toupper(buffer[i]);
}
send(new_socket, buffer, strlen(buffer), 0);
// 关闭连接
close(new_socket);
close(server_fd);
return 0;
}
TCP 客户端(tcp_client.c
)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#define PORT 12000
#define BUFFER_SIZE 1024
int main() {
int sock = 0;
struct sockaddr_in serv_addr;
char *message = "hello server";
char buffer[BUFFER_SIZE] = {0};
// 创建TCP套接字
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
printf("Socket creation error\n");
return -1;
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
// 连接到服务器
if (inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
printf("Invalid address/ Address not supported\n");
return -1;
}
if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
printf("Connection failed\n");
return -1;
}
// 发送消息到服务器
send(sock, message, strlen(message), 0);
printf("Message sent\n");
// 接收来自服务器的消息
read(sock, buffer, BUFFER_SIZE);
printf("From Server: %s\n", buffer);
// 关闭套接字
close(sock);
return 0;
}
4. 编译和运行
4.1 Python TCP 程序
-
启动服务器:
- 在VSCode终端中,导航到包含
TCPServer.py
的目录,并运行以下命令:
python3 TCPServer.py
- 在VSCode终端中,导航到包含
-
启动客户端:
- 打开一个新的VSCode终端,导航到包含
TCPClient.py
的目录,并运行以下命令:
python3 TCPClient.py
- 打开一个新的VSCode终端,导航到包含
4.2 C 语言 TCP 程序
-
编译服务器:
- 在VSCode终端中,导航到包含
tcp_server.c
的目录,并运行以下命令编译:
gcc tcp_server.c -o tcp_server
- 在VSCode终端中,导航到包含
-
编译客户端:
- 在VSCode终端中,导航到包含
tcp_client.c
的目录,并运行以下命令编译:
gcc tcp_client.c -o tcp_client
- 在VSCode终端中,导航到包含
-
启动服务器:
- 编译完成后,运行以下命令启动服务器:
./tcp_server
-
启动客户端:
- 在另一个VSCode终端中,运行以下命令启动客户端:
./tcp_client
5. 验证通信
- 客户端会向服务器发送一条消息(Python实现中用户输入,C语言中是预定义的字符串),服务器会接收消息并将其转换为大写字母,然后将处理后的消息发送回客户端。客户端会接收到处理后的消息并显示。
原文地址:https://blog.csdn.net/FHKHH/article/details/142337554
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!