进程间通过TCP通信的问题

我的系统上人机界面是用JAVA写的,而系统上的本地底层程序是用C写的,现在我需要将C程序得到的数据发送给JAVA程序,当然可以用JNI来实现,可是做起来比较复杂,现在我想用socket来实现,可是有一个问题没想通,如果C程序当作server端,JAVA程序当作client端,当client去和server连接时需要设定server端的IP地址,可是如果是进程间通信这个IP应该是什么呢?本地IP?可以不设置它而实现吗?请xtang指教,谢谢!

  1. 用127.0.0.1
    2)可以用Unix Domain Socket (AF_UNIX).

帖子怎么发不了?

accept()语句老是报错

错误信息是不能够将int指针转换为socklen_t指针,操作系统是红帽9

xtang,帮忙看一下

你这是编译时出错?还是执行时出错?。

addrlen >
A value-result parameter. It should initially contain the amount of space pointed to by addr; on return it contains the actual length (in bytes) of the address returned. This call is used with connection-based socket types, currently with SOCK_STREAM.

你有没有在调用accept()前,设好addrlen呢?

编译时出错,原语句如下:
struct sockaddr_in peer;
int addrlen=sizeof(peer);
sockfd2=accept(sockfd1,(struct sockaddr *)&peer,&addrlen);

很奇怪,用gcc编译可以通过,但是用g++编译就出以上错误。

xtang,程序终于跑起来了,但是有个问题,用client端用“127.0.0.1”连接server一端成功后,server一端的总是不断的接到client发送来的字节(server端用recv()函数返回值不是-1),但是client端其实什么都没有发,如果client端发送一段数据给server,则server能够接收到,但是server端总是不停的接收到同一段数据,而不是接收后处于阻塞状态。

原因找到了,当client端close掉端口后,server端的recv()函数会不停的返回而不处于阻塞状态,这如何解决呢?

问题解决了,哈哈!