java client,c++ server,没有效果啊,大神求助
androidstudio吧
全部回复
仅看楼主
level 1
Kicco酱 楼主
上面是c++的代码,下面是java的代码,大神求助
在AS中编译运行java代码,在vs中运行c++,然后再模拟器中发送消息
c++运行的程序没有收到任何消息
==================================
#include <Winsock2.h>
#include <cstdio>
#pragma comment(lib,"ws2_32.lib")
void main()
{
WSADATA wsaData;
SOCKET sockServer;
SOCKADDR_IN addrServer;
SOCKET sockClient;
SOCKADDR_IN addrClient;
WSAStartup(MAKEWORD(2, 2), &wsaData);
sockServer = socket(AF_INET, SOCK_STREAM, 0);
addrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//INADDR_ANY表示任何IP
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons(54321);//绑定端口6000
bind(sockServer, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));
//Listen监听端
listen(sockServer, 5);//5为等待连接数目
printf("服务器已启动:\n监听中...\n");
int len = sizeof(SOCKADDR);
char sendBuf[100];//发送至客户端的字符串
char recvBuf[100];//接受客户端返回的字符串
//会阻塞进程,直到有客户端连接上来为止
sockClient = accept(sockServer, (SOCKADDR*)&addrClient, &len);
//接收并打印客户端数据
recv(sockClient, recvBuf, 100, 0);
printf("%s\n", recvBuf);
//关闭socket
closesocket(sockClient);
WSACleanup();
}
=========================================
package com.example.gt60.myapplication;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity
{
private final String DEBUG_TAG = "Activity01";
private TextView mTextView = null;
private EditText mEditText = null;
private Button mButton = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button)findViewById(R.id.Button01);
mTextView = (TextView)findViewById(R.id.TextView01);
mEditText = (EditText)findViewById(R.id.EditText01);
//登陆
mButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Socket socket = null;
String message = mEditText.getText().toString() + "/r/n";
try
{
//创建Socket
// socket = new Socket("192.168.1.110",54321);
socket = new Socket("127.0.0.1",54321); //IP:10.14.114.127,端口54321
//向服务器发送消息
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
out.println(message);
//接收来自服务器的消息
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = br.readLine();
if ( msg != null )
{
mTextView.setText(msg);
}
else
{
mTextView.setText("数据错误!");
}
//关闭流
out.close();
br.close();
//关闭Socket
socket.close();
}
catch (Exception e)
{
// TODO: handle exception
Log.e(DEBUG_TAG, e.toString());
}
}
});
}
}
2017年08月11日 12点08分 1
1