将c unix服务器/套接字连接到java windows客户端/套接字
发布时间:2020-12-16 07:07:24 所属栏目:百科 来源:网络整理
导读:最初我要感谢你的时间…… 我在我的macbook中使用c创建了一个服务器套接字,并在运行windows xp的不同机器中使用Java创建了一个客户端/套接字.我已将端口指定为5000但我无法指定正确的主机,因此无法建立连接.当我使用WinSock2在Windows XP中创建一个c服务器/
最初我要感谢你的时间……
我在我的macbook中使用c创建了一个服务器套接字,并在运行windows xp的不同机器中使用Java创建了一个客户端/套接字.我已将端口指定为5000但我无法指定正确的主机,因此无法建立连接.当我使用WinSock2在Windows XP中创建一个c服务器/套接字时,连接完全正如我使用localhost …任何想法??? Thnx提前 C代码 int main(int argc,const char ** argv) /* SOCKET VARIABLES */ int sock; struct sockaddr_in server; int mysock; char buff[1024]; int rval; /*CREATE SOCKET*/ sock =socket(AF_INET,SOCK_STREAM,0); if (sock<0) { perror("*FAILED TO CREATE SOCKET*"); exit(1); } server.sin_family=AF_INET; server.sin_addr.s_addr=INADDR_ANY; server.sin_port=5000; /*CALL BIND*/ if (bind(sock,(struct sockaddr *)&server,sizeof(server))) { perror("BIND FAILED"); exit(1); } /*LISTEN*/ listen(sock,5); /*ACCEPT*/ do{ mysock= accept(sock,(struct sockaddr *) 0,0); if (mysock==-1) { perror ("ACCEPT FAILED"); } else { memset(buff,sizeof(buff)); if ((rval=recv(mysock,buff,sizeof(buff),0)) <0) { perror("READING STREAM MESSAGE ERROR"); } else if(rval==0) printf("Ending connection"); else printf("MSG: %sn",buff); printf("GOT THE MESSAGE (rval = %d)n",rval); } return 0; }while (1) ; Java代码 import java.io.; 公共课SOK_1_CLIENT { public void run() throws Exception { Socket SOCK =new Socket ("localhost",5000); PrintStream PS =new PrintStream(SOCK.getOutputStream()); PS.println("HELLO TO SERVER FROM CLIENT"); InputStreamReader IR =new InputStreamReader(SOCK.getInputStream()); BufferedReader BR = new BufferedReader(IR); String MESSAGE =BR.readLine(); System.out.println(MESSAGE + "java"); } } 解决方法
在java客户端中,使用运行服务器而不是“localhost”的系统的IP地址. Localhost将引用运行客户端代码127.0.0.1的计算机的本地环回地址,但您的服务器在不同的计算机上运行,??因此无法连接:
public void run() throws Exception { String address = "address_of_machine_running_server"; Socket SOCK =new Socket (address,5000); PrintStream PS =new PrintStream(SOCK.getOutputStream()); PS.println("HELLO TO SERVER FROM CLIENT"); InputStreamReader IR =new InputStreamReader(SOCK.getInputStream()); BufferedReader BR = new BufferedReader(IR); String MESSAGE =BR.readLine(); System.out.println(MESSAGE + "java"); } 另请注意,您需要相应地设置防火墙以允许连接. >允许两台机器中的传入和传出连接>检查服务器的IP地址是否正确>尝试使用其IP地址ping主机(服务器)以确保其正常工作>如果以上所有回报都是肯定的,那么你就会有一个成功的联系. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |