java的客户端可以连接CPlus的服务端

  今天做的实验,用c++做的服务端,端口号为6000;用java做的客户端,IP为127.0.0.1,port为6000,结果双方可以连接上线;

贴代码:

服务端:

#include <winsock2.h>
#include <iostream>
using namespace std;
SOCKET sockConn = NULL;
char content[100] = " ";
int flag = 1;
DWORD WINAPI MYrevc(LPVOID lp)
{
while(1)
{
char recvBuf[100];
if(flag==0)
{

recv(sockConn,recvBuf,100,0);///////////
}
if(recvBuf[0]!=0)
{
cout<<recvBuf<<endl;
//cout<<"MYrecv"<<endl;
flag = 1;
}
Sleep(1000);
}
return 0;
}
DWORD WINAPI MYsend(LPVOID lp)
{
cin>>content;
send(sockConn,content,strlen(content)+1,0);
flag = 0;
return 0;
}
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return 0;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return 0;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

listen(sockSrv,5);

SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
cout<<"client has logined!"<<endl;
MYsend(NULL);
HANDLE rThread = CreateThread(NULL,0,MYrevc,NULL,0,NULL);//接收消息的线程
CloseHandle(rThread);
while(1)
{
if(flag)
{
HANDLE sThread = CreateThread(NULL,0,MYsend,NULL,0,NULL);
CloseHandle(sThread);
}
Sleep(1000);
}
// closesocket(sockConn);
return 1;
}

客户端:

package sock;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class Sock {
public static void main(String[] args) {
try {
Socket sock = new Socket("127.0.0.1",6000);
System.out.println("Connect Successed!");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

运行效果:

服务端:

客户端:

时间: 2024-10-05 15:30:09

java的客户端可以连接CPlus的服务端的相关文章

TCP客户端频繁连接退出,服务端避免内存的重复开辟

防止内存的重复开辟:Free 而不 Destory 参数说明: lpFreeSocketList:服务端数据结构中保存的退出的客户对象链表头 lpSocketListCs:临界区指针 s:SOCKET对象 LPSOCKET_OBJ GetSocketObj(LPSOCKET_OBJ * lpFreeSocketList, CRITICAL_SECTION * lpSocketListCs, SOCKET s){ LPSOCKET_OBJ lpSockObj = NULL; EnterCritic

java网络编程TCP传输—流操作—服务端反馈与客户端接收

在读取完流后,服务端会向客户端返回一些数据,告诉客户端,已经写完了. 在这里和”流操作—拿到源后的写入动作“差不多,客户端同样以byte与Buffered两种缓冲读取作为例子,同时,.也是希望大家给补充. 1.利用OutputStream向客户端回写,客户端用byte作为缓冲接收 向客户端回写: 1 //获取socket输出流,将上传成功字样传给客户端 2 OutputStream out=s.getOutputStream(); 3 out.write("上传成功".getBytes

(8)Linux(客户端)和Windows(服务端)下socket通信实例

Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <stdio.h> #include <Windows.h> #pragma comment(lib, "ws2_32.lib") #define Port 5000 #define IP_ADDRESS "192.168.1.30"     //服务器地址

WebSocket安卓客户端实现详解(三)–服务端主动通知

WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 WebSocket安卓客户端实现详解(二)–客户端发送请求 终于是最后一篇啦,有点激动\ ( ≧▽≦ ) /啦啦啦, 服务端主动通知 热身完毕,我们先回顾下第一篇中讲到的服务端主动通知的流程 根据notify中事件类型找到对应的处理类,处理对应逻辑. 然后用eventbus通知对应的ui界面更新. 如果

如何创建一个客户端回调:js获得服务端的内容?

答案:表面上看去就是前端的js调用服务的C#方法,本质就是ajax,通过XMLHttpRequest对象和服务端进行交互.回调:就说回过头来调用,按理说js是一种脚本语言,怎么能用来调用服务端的呢?就是通过XMLHttpRequest实现的. 下面说一些具体的操作步骤 1.页面继承接口System.Web.UI.ICallbackEventHandler //继承接口使得:该页面可以作为服务器上的回调事件的目录 2.定义前端代码如下 <div> 请输入信息: <input type=&q

【转-整理】Java 对外接口开发(http)服务端-客户端

java开发接口利用http协议传输数据 这个接口主要用来登录,java服务器提供一个接口,移动设备客户端(android和ios)能通过这个接口把用户名和密码之类的东东传过来到服务器验证,然后服务器返回数据告诉客户端是否登录成功.比如0是成功,1是失败.中间数据的传递都是通过http协议完成.这个接口该怎么写? 代码1.2为服务器接口,接收到客户端的信息解析验证,并返回需要的信息. 服务端代码: 1 public class TestTransfers extends HttpServlet

JAVA聊天室客户端不显示内容,服务端没问题的原因总算找到了

o(≧口≦)o刚才打了很多内容,结果忘了网络断开了,没法自动存稿.结果一发布把内容都弄没了.气死,不写了. 今天讲的是JAVAEE,讲的很快,主要就重点或者是和SE不一样的才过一下,差不多的就跳过去,让我们自己看PPT......(没掉的内容)...... 上周做了个简单的聊天室功能代码,一直出错.发的内容只能在服务端看到,客户端却看不到.字符串一直等待接收,但就是收不到.对着老师的代码改了好几遍,还是不行.还让老师帮忙看了很久,也还是没发现问题.今天下午又试着做了一遍,不过代码不熟,还是按照自

客户端如何更具需要连接不同的服务端

当我们写客户端<-------->服务端的时候,AB服务端都可以做同样的工作,通过右键添加服务引用的话,拂过做成分布集群的话,一两个服务端无所谓,十个了你得添加十次,二十个你得添加二十次.那么问题出现了,如何在客户端动态的根据各个服务器连接数自动的负载均衡了. 第一步:服务端肯定有服务文件,如图 代码如下: using System; using System.Collections.Generic; using System.IO; using System.Linq; using Syst

java socket 多线程通讯 使用mina作为服务端

客户端代码不变,参照 http://www.cnblogs.com/Westfalen/p/6251473.html 服务端代码如下: import java.io.IOException; import java.net.InetSocketAddress; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; import org.apache