導航:首頁 > 編程語言 > java接收c

java接收c

發布時間:2022-08-09 11:54:36

A. java 怎麼接收C語言發送過了的post數據{"WINID":」123456「}

Java 用socket 類 監聽一個機器的某個埠吧,C把數據發到那個機器的那個埠,就能拿到了。。
你這個 目測是http post一個json串吧? Java有http相關的類,直接用就好。。

B. java接受c語言socket字元串

兩邊要對應的,才行。如果C也是按UTF8發送的,接收用readUTF()才行。
否則,就用一般的讀取函數

C. java與c通信,接收不到返回值 java與c通信,發送正常,接收不到信息。

socket.shutdownOutput();你去除試試!

D. java監聽埠接收不到C項目發過來的字元串

發一下關鍵代碼,這種不同體系語言之間的通信,字元串的編碼格式一定要注意,要按照統一編碼變成位元組碼傳輸,然後再轉換

E. java伺服器和C的客戶端進行通信,伺服器要接受從客戶端發來的一個結構體,如何接收

你打算通過哪種方式進行通信?
如果你打算通過網路通信那麼java建立一個伺服器端套接字監聽一個埠,c語言寫的程序向這個伺服器埠發生數據即可
如果你打算通過管道通信,那麼c語言寫的程序向管道中寫入數據,java寫的程序從管道中讀取數據即可

F. java中char類型如何接收控制台輸入

java中基本數據類型的輸入包括整形的輸入:in.nextInt();單精度浮點型:in.nextFloat();雙精度浮點型:in.nextDouble();字元串類型:in.next();in.nextLine();那麼,您是否以為char類型也如in.nextChar();這樣呢?如果您這樣寫過,那麼您一定見過這個error:「The method nextChar() is undefined for the type Scanner」。那麼char類型該如何輸入呢???
有時候需要我們用Scanner接收char類型數據,而不是接收String。比如,當我們要用到switch()語句時,就不能用String類型了。switch語句:switch關鍵字的中文意思是開關、轉換的意思,switch語句在條件語句中特別適合做一組變數相等的判斷,在結構上比if語句要清晰很多。
switch語句的語法格式為:
switch(表達式){
case 值1:
功能代碼1;
[break;]
case 值2:
功能代碼2;
[break;]
……
default:
功能代碼1;
[break;]
}
語法說明:
1、 表達式的類型只能為byte、short、char和int這4種之一。
2、 值1、值2…值n只能為常數或常量,不能為變數。
3、 功能代碼部分可以寫任意多句。
4、 break關鍵字的意思是中斷,指結束switch語句,break語句為可選。
5、 case語句可以有任意多句,是標號語句。
6、 default語句可以寫在switch語句中的任意位置,功能類似於if語句中的else.執行流程:當表達式的值和 對應case語句後的值相同時,既從該位置開始向下執行,一直執行到switch語句的結束,在執行中,如果 遇到break語句,則結束switch語句的執行。
正常使用Scanner時,可以這樣:
Scanner in = new Scanner(System.in);

char c = in.next().charAt(0);

下面是ACM中的模擬計算器的題目,以此作為示例:
import java.util.*;
public class Main {
public static void main(String[] args){

Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
char c = in.next().charAt(0);
switch(c)
{
case '+':
System.out.printf("%d",a+b);
break;
case '-':
System.out.printf("%d",a-b);
break;
case '*':
System.out.printf("%d",a*b);
break;
case '/':
if(b!=0)
{
System.out.printf("%d",a/b);
}
break;
}
}
}

G. java與C的socket通信,java寫服務端,C寫客戶端,java端接收C端的消息時報空指針異常。

這個客戶端語言沒有關系吧,瀏覽器(B/S模式)都能用作客戶端。

H. java如何調用c語言源文件並執行

要在java中調用c語言的庫,需要使用Java提供了JNI。
舉例說明
在c語言中定義一個 void sayHello()函數(列印Hello World);然後在Java中調用這個函數顯示Hello Word.
現在分別從Java和C語言兩部分說明:
1. Java 部分
首先定義一個HelloNative,在其中申明sayHello函數,函數要申明為Native 類型的.如下:
public class HelloNative {
public native void sayHello();
}

編譯這個類,生成class文件:
javac HelloWorld.java

利用javah生成需要的h文件
javah HelloNative

生成的 h文件大概如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */

#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_sayHello
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

可以看一下上面自動生成的程序,程序include了jni.h,這個頭文件在 $JAVA_HOME下的include文件夾下. 還可以發現生成的函數名是在之前的函數名前面加上了Java_HelloNative。
2. C語言部分
根據上面生成的h文件編寫相應的代碼實現,建立一個 HelloNative.cpp用來實現顯示Hello World的函數.如下:

#include <stdio.h>
#include "HelloNative.h"

JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)
{
printf("Hello World!\n");
}

代碼編寫完成之後,我們再用gcc編譯成庫文件,命令如下;
gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp

這樣就會在當前目錄下生成一個libHelloNative.so的庫文件.這時需要的庫已經生成,在C語言下的工作已經完成了.
接下來需要在Java中編寫一個程序測試一下.在程序前,需要將我們的庫載入進去.載入的方法是調用Java的 System.loadLibrary("HelloNative");

public class TestNative
{
static {
try {
System.loadLibrary("HelloNative");
}
catch(UnsatisfiedLinkError e) {
System.out.println( "Cannot load hello library:\n " + e.toString() );
}
}
public static void main(String[] args) {
HelloNative test = new HelloNative();
test.sayHello();
}
}

但是再編譯後,運行的時候,問題又出現了.
Cannot load hello library:
java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V
at HelloNative.sayHello(Native Method)
at TestNative.main(TestNative.java:13)

載入庫失敗,但是庫明明就是放在當前文件夾下的,怎麼會載入失敗呢?
用System.getProperty("java.library.path")查看,發現java.library.path中並不u存在當前的目錄.主要有以下的幾個解決辦法:
1) 將生成的庫復制到java.library.path有的路徑中去,當然這樣不是很好
2) 設置環境變數export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,將當前的目錄加入到LD_LIBRARY_PATH中
3) 設置java 的選項,將當前的目錄加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
這樣之後程序就能夠成功的運行了.可以看見顯示的"Hello World!"了

I. 寫一個java 程序,udp客戶端接收一個c寫的數據結構包,結果亂碼。怎麼改

我這邊完全可以給你幫助。

閱讀全文

與java接收c相關的資料

熱點內容
如何測試流媒體伺服器的並發能力 瀏覽:159
溯源碼有分國家認證的嗎 瀏覽:218
如何通過app查詢產檢報告 瀏覽:944
拉結爾安卓手機怎麼用 瀏覽:695
驅動級進程代理源碼 瀏覽:782
androidshape畫線 瀏覽:510
程序員想辭職被拒絕 瀏覽:101
java面試邏輯 瀏覽:749
如何下載全英文app 瀏覽:724
js函數式編程指南 瀏覽:380
為什麼安卓手機相機啟動會卡 瀏覽:341
python中t是什麼意思 瀏覽:765
移動硬碟內存加密 瀏覽:407
單片機測角度 瀏覽:864
URL伺服器地址怎麼填 瀏覽:438
壓縮餅干會導致血糖高嗎 瀏覽:569
cad中xc命令怎麼用 瀏覽:424
戴爾伺服器怎麼看網卡介面 瀏覽:823
鹽鐵論pdf 瀏覽:424
最短路徑的生成演算法可用 瀏覽:457