Socket 字符串是网络编程中非常重要的一个概念,它可以用来实现服务器与客户端之间的通讯。在 Java 和 C 中,socket 字符串都有着较为明显的差异。
在 Java 中,通常使用的是基于 TCP 协议实现的 Socket 字符串。Java 提供了 socket 包来实现 Socket 字符串的相关操作。下面是一个基本的 Java Socket 字符串示例:
import java.net.*; import java.io.*; public class GreetingClient { public static void main(String[] args) { String serverName = args[0]; int port = Integer.parseInt(args[1]); try { System.out.println("正在连接服务器 " + serverName + ",端口号为 " + port); Socket client = new Socket(serverName, port); System.out.println("已连接服务器,远程主机地址为 " + client.getRemoteSocketAddress()); OutputStream outToServer = client.getOutputStream(); DataOutputStream out = new DataOutputStream(outToServer); out.writeUTF("客户端发送的数据 " + client.getLocalSocketAddress()); InputStream inFromServer = client.getInputStream(); DataInputStream in = new DataInputStream(inFromServer); System.out.println("服务器返回的数据 " + in.readUTF()); client.close(); } catch (IOException e) { e.printStackTrace(); } } }
在 C 中,通常使用的是基于 BSD socket 库实现的 Socket 字符串。C 中的 Socket 字符串操作较为底层,需要自行实现 Socket 字符串的相关函数。下面是一个基本的 C Socket 字符串示例:
#include#include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int sockfd, n; struct sockaddr_in serv_addr; struct hostent *server; char buffer[256]; if (argc < 3) { fprintf(stderr, "使用方法:%s hostname port\n", argv[0]); exit(0); } int portno = atoi(argv[2]); sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("ERROR opening socket"); exit(1); } server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr, "ERROR,找不到主机\n"); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) { perror("ERROR,连接失败"); exit(1); } printf("请输入发送到服务器的数据: "); bzero(buffer,256); fgets(buffer,255,stdin); n = write(sockfd, buffer, strlen(buffer)); if (n < 0) { perror("ERROR,写入失败"); exit(1); } bzero(buffer,256); n = read(sockfd, buffer, 255); if (n < 0) { perror("ERROR,读取失败"); exit(1); } printf("来自服务器的数据: %s", buffer); close(sockfd); return 0; }
以上是 Java 和 C 中基本的 Socket 字符串示例,希望能帮助读者了解 Socket 字符串的操作方式。