我们来详细讲解一下C++、Python和Go语言实现的简单客户端服务器代码示例。
C++ 实现简单客户端服务器
使用C++实现一个简单的客户端和服务器端交互的程序,可以使用TCP/IP协议,以下是一份C++实现简单客户端服务器的示例代码。
服务器端代码
#include <iostream>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;
SOCKET sListen, sServer;
sockaddr_in local, sin;
WSAStartup(MAKEWORD(2, 2), &wsaData);
sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
local.sin_family = AF_INET;
local.sin_port = htons(8080);
local.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
bind(sListen, (struct sockaddr*)&local, sizeof(local));
listen(sListen, 5);
while (1)
{
cout << "Waiting for connection...\n";
int nAddrLen = sizeof(sin);
sServer = accept(sListen, (struct sockaddr*)&sin, &nAddrLen);
cout << "Get a connection from " << inet_ntoa(sin.sin_addr) << ":" << ntohs(sin.sin_port) << endl;
char szBuffer[1024] = { 0 };
if (recv(sServer, szBuffer, 1024, 0) > 0)
{
cout << "Client send message: " << szBuffer << endl;
send(sServer, szBuffer, strlen(szBuffer), 0);
}
shutdown(sServer, SD_BOTH);
closesocket(sServer);
}
WSACleanup();
return 0;
}
客户端代码
#include <iostream>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;
SOCKET sClient;
sockaddr_in sin;
WSAStartup(MAKEWORD(2, 2), &wsaData);
sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sin.sin_family = AF_INET;
sin.sin_port = htons(8080);
sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
connect(sClient, (struct sockaddr*)&sin, sizeof(sin));
char szMessage[] = "Hello World";
send(sClient, szMessage, strlen(szMessage), 0);
char szBuffer[1024] = { 0 };
if (recv(sClient, szBuffer, 1024, 0) > 0)
cout << "Get echo message: " << szBuffer << endl;
closesocket(sClient);
WSACleanup();
return 0;
}
说明
以上是用C++实现的简单客户端服务器代码,以TCP/IP协议为例。在服务器端代码中,首先进行了Winsock库的初始化,然后创建一个套接字。之后,指定本地IP、端口以及套接字类型和协议。接下来,将套接字绑定到本地IP和端口并开始监听连接请求。如果有客户端请求连接,将会接收客户端连接并进行数据的收发。在客户端代码中也是先进行Winsock库的初始化,然后创建一个套接字,并指定服务器IP、端口和套接字类型和协议。接着,客户端连接到服务器并发送一个消息,等待服务器的响应,并打印出服务器的响应消息。
Python 实现简单客户端服务器
Python自带标准库 socket
,可以使用它来完成一个简单的客户端和服务器端交互程序。以下是一份Python实现的简单客户端服务器的示例代码。
服务器端代码
import socket
HOST = '127.0.0.1'
PORT = 8080
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
while True:
print('Waiting for connection...')
conn, addr = s.accept()
with conn:
print('Get a connection from', addr)
while True:
data = conn.recv(1024)
if not data:
break
print('Client send message:', data.decode())
conn.sendall(data)
客户端代码
import socket
HOST = '127.0.0.1'
PORT = 8080
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
message = 'Hello World'.encode()
s.sendall(message)
data = s.recv(1024)
print('Get echo message:', data.decode())
说明
以上是用Python实现的简单客户端服务器代码。在服务器端代码中,首先创建一个TCP套接字,并绑定到本地IP和端口。然后,服务器开始监听连接请求,如果有客户端请求连接,将会接收客户端连接并进行数据的收发。在客户端代码中也是先创建一个TCP套接字,并指定服务器IP、端口,然后客户端连接到服务器并发送一个消息,等待服务器的响应,并打印出服务器的响应消息。
Go 实现简单客户端服务器
使用Go语言实现一个简单的客户端和服务器端交互程序,以下是一份Go语言实现的简单客户端服务器的示例代码。
服务器端代码
package main
import (
"fmt"
"net"
)
const (
HOST = ""
PORT = "8080"
)
func main() {
listener, _ := net.Listen("tcp", HOST+":"+PORT)
defer listener.Close()
fmt.Println("Waiting for connection...")
for {
conn, _ := listener.Accept()
defer conn.Close()
addr := conn.RemoteAddr().String()
fmt.Println("Get a connection from", addr)
buf := make([]byte, 1024)
for {
n, err := conn.Read(buf)
if err != nil {
fmt.Println("Client has closed the connection")
break
}
fmt.Println("Client send message:", string(buf[:n]))
conn.Write(buf[:n])
}
}
}
客户端代码
package main
import (
"fmt"
"net"
)
const (
HOST = "127.0.0.1"
PORT = "8080"
)
func main() {
conn, _ := net.Dial("tcp", HOST+":"+PORT)
defer conn.Close()
message := []byte("Hello World")
conn.Write(message)
buf := make([]byte, 1024)
n, _ := conn.Read(buf)
fmt.Println("Get echo message:", string(buf[:n]))
}
说明
以上是用Go语言实现的简单客户端服务器代码。在服务器端代码中,首先创建一个TCP连接监听器,然后开始监听连接请求,如果有客户端请求连接,将会接收客户端连接并进行数据的收发。在客户端代码中也是先创建一个TCP连接器,并指定服务器IP、端口,然后客户端连接到服务器并发送一个消息,等待服务器的响应,并打印出服务器的响应消息。
总之,以上三种语言都可以实现简单的客户端和服务器端交互程序。其中,C++的Socket编程需要手动处理大量的系统底层API,相对比较复杂。Python和Go语言则是用标准库提供的接口进行简单封装,更易于上手。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++、python和go语言实现的简单客户端服务器代码示例 - Python技术站