有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`
Socket编程是一种网络编程的技术,它允许计算机之间通过网络进行数据交换。在进行原生Socket编程时,你将直接使用操作系统提供的Socket API来创建网络应用。以下是一些基本概念和步骤,以及如何在不同的编程语言中实现它们。
import socket
# 创建Socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定到本地地址和端口
s.bind(('localhost', 12345))
# 监听连接
s.listen(5)
# 接受连接
clientsocket, address = s.accept()
# 发送数据
clientsocket.send("Hello World".encode())
# 关闭Socket
clientsocket.close()
s.close()
import java.net.ServerSocket;
import java.net.Socket;
import java.io.OutputStream;
import java.io.PrintWriter;
public class Server {
public static void main(String[] args) throws Exception {
// 创建ServerSocket
ServerSocket serverSocket = new ServerSocket(12345);
// 接受连接
Socket clientSocket = serverSocket.accept();
// 发送数据
OutputStream outputStream = clientSocket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream, true);
printWriter.println("Hello World");
// 关闭Socket
printWriter.close();
clientSocket.close();
serverSocket.close();
}
}
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <iostream>
int main() {
// 创建Socket
int server_fd = socket(AF_INET, SOCK_STREAM, 0);
// 定义地址结构
struct sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(12345);
// 绑定Socket到地址
bind(server_fd, (struct sockaddr *)&address, sizeof(address));
// 监听连接
listen(server_fd, 3);
// 接受连接
int addrlen = sizeof(address);
int new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen);
// 发送数据
std::string hello = "Hello World";
send(new_socket, hello.c_str(), hello.size(), 0);
// 关闭Socket
close(new_socket);
close(server_fd);
return 0;
}
在进行原生Socket编程时,你需要对网络编程有一定的了解,并且熟悉你所使用的编程语言的Socket API。上面的示例代码仅展示了最基本的Socket操作,实际应用中可能需要处理更多的网络事件和错误。