java 客户端与c++服务器端tcp通信 demo

原创 2012年07月23日 22:31:16
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

绑定端口

监听端口

// ConsoleServer.cpp : 定义控制台应用程序的入口点。
//

#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);
		}		
	}
}

通信结果显示,在eclipse里面



版权声明:本文为博主原创文章,未经博主允许不得转载。

C++写的服务器与Java写的客户端通过Socket通信(源代码)

更多精彩内容,请见:http://www.16boke.com by zxy,QQ群:168424095 由于数据类型的关系搞了两天才出来,不过还是很高兴. C++代码: #include "std...
  • one_in_one
  • one_in_one
  • 2012年01月09日 17:41
  • 3970

c++客户端和java(Netty)服务器端tcp通讯

  • 2017年02月27日 14:43
  • 8.15MB
  • 下载

Java客户端C++服务端Socket交互通信

原文地址:http://www.drdobbs.com/jvm/java-and-c-socket-communication/222900697?pgno=1 通过socket网络通信集成c++ ...
  • hnyzwtf
  • hnyzwtf
  • 2016年03月20日 21:48
  • 5903

java和C和C++关系

java和C以及C++ 直接关联,java继承了C的语法,java的对象模型是从C++改编而来的.java和C以及C++关系之所以重要,下面几个就是原因: ①如果一个程序员熟悉C以及C++语法,那么...
  • qq_34337272
  • qq_34337272
  • 2016年11月04日 09:56
  • 1525

一个程序员的Java和C,C++学习之路(整理)

一直有这么个想法,列一下我个人认为在学习和使用Java过程中可以推荐一读的书籍,给初学者或者想深入的朋友一些建议,帮助成长。推荐的的都是我自己读过,也会推荐一些朋友读过并且口碑不错的书籍。 一、...
  • benpaobagzb
  • benpaobagzb
  • 2016年03月02日 22:12
  • 2775

tcp客户端与服务端之间的通信实例

假设你只有一台电脑,还不能连接上Internet, 那如何进行网络编程呢?用回测地址吧。       服务端的程序为:...
  • stpeace
  • stpeace
  • 2013年10月01日 15:32
  • 6065

TCP/IP通信 客户端、服务器 实例

本篇文章实现了一个基于TCP 的一个非常简单的客户/服务器通信程序实例。该程序中通讯协议使用的是面向连接的TCP协议SOCK_STREAM, 服务器的ip地址为本地地址即: 127.0.0.1,...
  • qingzai_
  • qingzai_
  • 2016年03月22日 14:00
  • 1364

Java实现简单的socket通信

前言 首先,说一件无关的事情,萧鼎的诛仙2更新了,这一等就是一年啊,今天中午思考去阿里用神马花名的时候想起来google一下诛仙二,结果50多章都没看过,555,没忍住一下午全用来看小说了,罪过罪过 ...
  • zinss26914
  • zinss26914
  • 2013年12月05日 00:32
  • 5104

c语言下,关闭socket的两种方式

c语言关闭socket的两种方式 一、shutdown() #include int shutdown(int sockfd,int how); how的方式有三种分别是 SHUT_RD(0)...
  • u012480384
  • u012480384
  • 2015年03月10日 19:29
  • 2654

Java客户端与C++服务器端通信

java客户端代码如下:创建socket并绑定
  • chongshangyunxiao321
  • chongshangyunxiao321
  • 2016年03月27日 21:49
  • 1083
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 客户端与c++服务器端tcp通信 demo
举报原因:
原因补充:

(最多只允许输入30个字)