提供一套使用tcp的socket的源码
时间: 2023-08-31 13:30:36 浏览: 135
TCPsocket源码
3星 · 编辑精心推荐
### 回答1:
好的。以下是使用 TCP 套接字的一个示例源代码:
```
#include <iostream>
#include <cstring>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
using namespace std;
const int kBufferSize = 1024;
int main(int argc, char* argv[]) {
// 创建套接字
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
cerr << "创建套接字失败" << endl;
return -1;
}
// 设置服务器地址
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
serv_addr.sin_port = htons(8080);
// 连接服务器
int ret = connect(sockfd, (struct sockaddr*) &serv_addr, sizeof(serv_addr));
if (ret < 0) {
cerr << "连接服务器失败" << endl;
return -1;
}
// 发送数据
char buffer[kBufferSize];
strcpy(buffer, "hello, server");
ret = send(sockfd, buffer, strlen(buffer), 0);
if (ret < 0) {
cerr << "发送数据失败" << endl;
return -1;
}
// 接收数据
memset(buffer, 0, kBufferSize);
ret = recv(sockfd, buffer, kBufferSize - 1, 0);
if (ret < 0) {
cerr << "接收数据失败" << endl;
return -1;
}
cout << "服务器发来的数据:" << buffer << endl;
// 关闭套接字
close(sockfd);
return 0;
}
```
这是一个简单的客户端程序,它会连接到本地的服务器(IP 地址为 127.0.0.1),并发送一条信息 "hello, server"。然
### 回答2:
下面是一个简单的使用TCP的Socket源码示例:
```python
import socket
# 定义主机和端口号
host = '127.0.0.1'
port = 12345
# 创建TCP Socket对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定主机和端口号
sock.bind((host, port))
# 监听连接
sock.listen(1)
print("服务器已启动,等待连接...")
# 等待客户端连接
client_sock, client_addr = sock.accept()
print("客户端已连接,地址:", client_addr)
# 与客户端进行通信
while True:
# 接收客户端发送的数据
data = client_sock.recv(1024)
if not data:
break
print("接收到来自客户端的消息:", data.decode())
# 发送响应给客户端
response = "已收到你的消息:{}".format(data.decode())
client_sock.send(response.encode())
# 关闭连接
client_sock.close()
sock.close()
```
以上是一个简单的TCP服务器源码示例,它通过socket模块创建了一个TCP Socket对象,并绑定了指定的主机和端口号。然后通过listen方法开始监听连接请求,并通过accept方法等待客户端的连接。在与客户端进行通信时,通过recv方法接收客户端发送的消息,然后通过send方法发送响应给客户端。最后,在通信结束后,关闭连接。
### 回答3:
以下是一个简单的使用TCP的Socket的源码示例:
```python
import socket
def server():
# 创建一个TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_socket.bind(('127.0.0.1', 8888))
# 监听连接
server_socket.listen(5)
print("服务器已启动,等待连接...")
while True:
# 接受客户端连接请求
client_socket, addr = server_socket.accept()
print("与客户端", addr, "建立连接")
while True:
try:
# 接收客户端发来的数据
data = client_socket.recv(1024)
if not data:
# 如果接收到空数据,则表示客户端已断开连接
print("与客户端", addr, "断开连接")
break
# 处理接收到的数据
# ...
# 向客户端发送响应数据
response = "Hello, Client!"
client_socket.send(response.encode())
except Exception as e:
print("与客户端", addr, "通信发生异常:", str(e))
break
# 关闭客户端套接字
client_socket.close()
# 关闭服务器套接字
server_socket.close()
def client():
# 创建一个TCP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# 连接服务器
client_socket.connect(('127.0.0.1', 8888))
# 发送数据给服务器
data = "Hello, Server!"
client_socket.send(data.encode())
# 接收服务器响应
response = client_socket.recv(1024)
print("服务器的响应:", response.decode())
except Exception as e:
print("与服务器通信发生异常:", str(e))
# 关闭客户端套接字
client_socket.close()
# 使用Server方法启动服务器
server()
# 使用Client方法启动客户端
client()
```
这个源码示例提供了一个简单的TCP Socket通信的实现。通过创建一个服务器端和一个客户端,实现了客户端向服务器端发送数据,服务器端接收数据并返回响应的功能。在实际应用中,需要根据具体的需求进行适当的修改和扩展。
阅读全文