c++与java通过socket实现网络通信的测试

本文展示了一个简单的C++服务器与Java客户端通过Socket进行通信的例子。C++端使用Winsock库建立服务器,Java端则利用Socket类进行连接。双方通过指定的端口9090实现了跨语言的数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



 这个小测试仅仅是为了证明一点:掌握了原理后,语言不再是问题,c++和java也可以实现“通婚”。

C++服务器端代码:
#include<winsock2.h>
#include<iostream>
using namespace std;

int main(){
      SOCKET ServerSocket; //服务器
     string client_ip ;//客户对应ip
      int port=9090;//端口号

      cout<<"C++服务器初始化!....."<<endl;
      //初始化winsock
      WSADATA wsaD; //WSADATA结构被用来保存函数WSAStartup返回的 Windows Sockets初始化信息。
       WSAStartup(MAKEWORD(1,1),&wsaD); //初始化Windows Sockets DLL
       //一、创建监听套接字 ,TCP
     ServerSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
     //af:协议地址家族。创建TCP/UDP套接字时该参数为AF_INET。
     //type:协议的套接字类型。有SOCK_STREAM、SOCK_DGRAM和SOCK_RAM 3种类型
     //protocol:协议。对于SOCK_STREAM套接字类型,该字段为IPPROTO_TCP或为0,
     // 对于SOCK_DGRAM套接字类型,该字段为IPPROTO_UDP或为0
     // 二、绑定主机地址和监听套接字
    struct sockaddr_in server_addr; //主机地址
    cout<<"主机地址"<<server_addr.sin_family<<endl;
    server_addr.sin_family = AF_INET; //协议地址家族
    cout<<"协议地址家族"<<server_addr.sin_family<<endl;
    server_addr.sin_port = htons(port); //指定端口 
   cout<<"服务器端口:"<<port<<endl;
    cout<<"server_addr.sin_port:"<<server_addr.sin_port<<endl;
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    // cout<<"server_addr.sin_addr.s_addr: "<<server_addr.sin_addr.s_addr<<endl;
    bind(ServerSocket,(struct sockaddr *)&server_addr,sizeof(server_addr));
    //三、启动监听
    listen(ServerSocket,5);
    while(true){
    //四、连接
           struct sockaddr_in c_addr; //客户地址 
           int addr_len =sizeof(c_addr);
           SOCKET clientsock = accept(ServerSocket,(struct sockaddr*)&c_addr,&addr_len); //通过监听套接字创建连接套接字
            client_ip = inet_ntoa(c_addr.sin_addr);
            cout<<"one java client is coming..."; 
      //五、收发数据
      //具体通信处理
     }
      //六、关闭
      //system("PAUSE");
       return 0;
}

     注意:要将socket动态库libws2_32.a添加到linker: C:/Dev-Cpp/lib/libws2_32.a 中,具体添加方法网上有。如果需要可以给我留言。

 

java客户端代码:

写道
import java.io.*;
import java.net.*;

public class TCPClient {

     public static void main(String[] args) throws Exception{
         Socket clientSocket = new Socket("192.168.1.103",9090);
        //收发数据,具体通信处理 
        //...............................   
        clientSocket.close();
}

 效果:



 

至此,c++和java的“Socket联姻”就完成了,接下来要怎么进行工作,你说了算!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值