Java客户端与C++服务器端通信
来源:互联网 发布:ubuntu命令行中文 编辑:程序博客网 时间:2024/04/30 19:41
java客户端代码如下:
创建socket并绑定
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.InetSocketAddress;import java.net.Socket;public class JavaClient { public static void main(String [] args) throws InterruptedException, IOException { InetSocketAddress addr = new InetSocketAddress("127.0.0.1", 5678); //创建socket Socket sock = new Socket(); sock.connect(addr);//连接服务器 BufferedReader is = null; PrintWriter os = null; os = new PrintWriter(sock.getOutputStream()); //管道的写工具 is = new BufferedReader(new InputStreamReader(sock.getInputStream())); //管道的读工具 BufferedReader user = new BufferedReader(new InputStreamReader(System.in)); //从控制台读取命令的工具 System.out.print("client say:"); String msg = user.readLine(); while(!msg .equals("bye")) { os.println(msg); os.flush(); String echo = is.readLine(); System.out.println(echo); System.out.print("client say:"); msg = user.readLine(); } os.close(); is.close(); sock.close(); } }
C++服务器端代码:
创建socket、绑定端口、监听端口
#include <winsock2.h> #include <process.h> #pragma comment(lib, "ws2_32.lib") #include <list> std::list<SOCKET> client_list; void thread_client(void * ); int main(int argc, char * argv[]) { WSADATA wsadata; WSAStartup(0x22, &wsadata); unsigned short sPort = argc>1 ? atoi(argv[1]) : 5678; int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sockfd == INVALID_SOCKET) { printf("fail to create socket.\n"); return 1; } sockaddr_in saddr; saddr.sin_addr.s_addr = ADDR_ANY; saddr.sin_port = htons(sPort); saddr.sin_family = AF_INET; if(bind(sockfd, (const sockaddr *)(&saddr), sizeof(saddr))) { printf("fail to bind, errno: %d.\n", GetLastError()); DWORD dw = WSAGetLastError(); return 2; } if (listen(sockfd, 5)) { printf("fail to listen.\n"); return 3; } printf("Server is listening at [%d].\n" "Wating for client to connect...\n" , sPort); for (;;) { sockaddr_in caddr; int caddr_len = sizeof(caddr); int client = accept(sockfd, (sockaddr *)&caddr, &caddr_len); unsigned char * pAddr = (unsigned char *)&caddr.sin_addr.s_addr; printf("[%d.%d.%d.%d : %d] coming.\n", pAddr[0], pAddr[1], pAddr[2], pAddr[3], ntohs(caddr.sin_port)); _beginthread(thread_client, 0, (void *)client); client_list.push_back(client); } return 0; } void thread_client(void * args) { SOCKET client = (int)args; sockaddr_in caddr; int caddr_len = sizeof(caddr); getpeername(client, (sockaddr *)&caddr, &caddr_len); unsigned char * pAddr = (unsigned char *)&caddr.sin_addr.s_addr; unsigned short usPort = ntohs(caddr.sin_port); for (;;) { char szMsg [0x1000] = ""; if (0 >= recv(client, szMsg, sizeof(szMsg)-1, 0)) break; char szEcho [0x1000] = ""; sprintf(szEcho, "Server Say: [%d.%d.%d.%d:%d] %s" , pAddr[0], pAddr[1], pAddr[2], pAddr[3] , usPort , szMsg); for (std::list<SOCKET>::iterator it = client_list.begin(); it != client_list.end(); it ++) { send(*it, szEcho, strlen(szEcho), 0); } } }
0 0
- Linux C+gsoap/Win C#服务器端与Java客户端通信
- Java客户端与C++服务器端通信
- 客户端与服务器端通信
- java与c语言之间的socket通信—java客户端c服务器端
- java与c语言之间的socket通信—c客户端java服务器端
- Java客户端与C服务器端数据通信
- 客户端与服务器端的通信
- 客户端与服务器端的通信
- java 客户端与c++服务器端tcp通信 demo
- java多线程实现服务器端与多客户端之间的通信
- C#服务器端与客户端通信(客户端)
- Linux网络编程-客户端与服务器端通信
- 客户端与服务器端通信之Cookie篇
- js 客户端与服务器端的通信
- socket编程---服务器端与客户端简单通信
- socket编程---服务器端与客户端简单通信
- 移动客户端与服务器端安全通信方案
- js 客户端与服务器端的通信
- shiro入门8:Shiro前几章复习
- 深入理解JavaScript系列(二): 原型、原型链与继承
- RunLoop应用场景
- MFC-自定义消息
- JVM运行时数据区域
- Java客户端与C++服务器端通信
- httpclient 4.5.1---连接管理器
- nginx信号控制
- smdk210 uboot移植
- 事务(Transaction)
- angular 双向绑定原理
- Ruby官方文档翻译(Ruby官方文档中文版)
- HDU-4572 Bottles Arrangement (数学)
- 设计模式系列之一:简单工厂模式