诛仙手游最碎片隐藏任:引用 java和C通讯 - tengyunju@126的日志 - 网易博客

来源:百度文库 编辑:九乡新闻网 时间:2024/05/01 02:43:39

SOCKET是套接字,都遵循标准TCP/IP协议。我们只用第七层协议。所以之间可以互相通讯

C服务器程序代码如下

// File: prg6_1.c
 #include           /* These are the usual header files */
 #include           /* for bzero() */
 #include          /* for close() */
 #include
 #include
 #include
 #include

 #define PORT 1234   /* Port that will be opened */
 #define BACKLOG 5   /* Number of allowed connections */
 #define MAXDATASIZE 1000 

 void process_cli(int connectfd, struct sockaddr_in client);

 main()
 {
 int listenfd, connectfd; /* socket descriptors */
 struct sockaddr_in server; /* server's address information */
 struct sockaddr_in client; /* client's address information */
 int sin_size;

 /* Create TCP socket  */
 if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)  {
    /* handle exception */
    perror("Creating socket failed.");
    exit(1);
    }

 int opt = SO_REUSEADDR;
 setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));

 bzero(&server,sizeof(server));
 server.sin_family=AF_INET;
 server.sin_port=htons(PORT);
 server.sin_addr.s_addr = htonl (INADDR_ANY);
 if (bind(listenfd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) {
    /* handle exception */
    perror("Bind error.");
    exit(1);
    }   

 if(listen(listenfd,BACKLOG) == -1){  /* calls listen() */
    perror("listen() error\n");
    exit(1);
   }

 sin_size=sizeof(struct sockaddr_in);
 while (1) {
    if ((connectfd = accept(listenfd,(struct sockaddr *)&client,&sin_size))==-1) {
       perror("accept() error\n");
       exit(1);
       }  
    process_cli(connectfd, client);
 }

 close(listenfd);   /* close listenfd */        
 }

 void process_cli(int connectfd, struct sockaddr_in client)
 {
 int num,i;
 char recvbuf[MAXDATASIZE], sendbuf[MAXDATASIZE];

 printf("You got a connection from %s\n",inet_ntoa(client.sin_addr) ); /* prints client's IP */

 while (num = recv(connectfd, recvbuf, MAXDATASIZE,0)) {
    recvbuf[num] = '\0';
    printf("Received client message: %s",recvbuf);

    for ( i = 0; i < num - 1; i++) {
       sendbuf[i] = recvbuf[num - i -2];
       }
    sendbuf[num - 1] = '\0';

    send(connectfd,sendbuf,strlen(sendbuf),0); /* send to the client welcome message */
    }

 close(connectfd); /*  close connectfd */
}

 

java 客户端代码如下名称为talkclient.java


import java.io.*;
import java.net.*;
public class talkclient
{
 public static void main(String args[])
 {
  try
  {
   Socket socket = new Socket("192.168.3.33",1234);
   BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
   PrintWriter os = new PrintWriter(socket.getOutputStream());
   BufferedReader is = new BufferedReader(new InputStreamReader(
    socket.getInputStream()));
   String readline;
   readline = sin.readLine();
   while (!readline.equals("bye")) 
   {
    os.println(readline);
    os.flush();
    System.out.println("Client:" + readline);
    System.out.println("Server:" + is.readLine());
    readline = sin.readLine();
   }
   os.close();
   is.close();
   socket.close();
  }catch(Exception e)
  {
   System.out.println("Error" + e);
  }
 }
}
   

 

  评论这张 转发至微博
引用 java和C通讯 - tengyunju@126的日志 - 网易博客 android wrapper C调用java api - 示韦BadSmile的日志 - 网易博客 C与java通讯小结 如何清除C盘无的东西[引用] - 出水芙蓉的日志 - 网易博客 引用 如何释放C盘空间 - abc6671的日志 - 网易博客 C 和java中多态机制的异同 喝茶和季节的关系 - c.q-123的日志 - 网易博客 【引用】引用 喝茶的好处和坏处 - 懒客的日志 - 网易博客 引用 引用 钩针和棒针的完美结合 - 林中漫步的日志 - 网易博客 引用 引用 毛泽东和林彪的珍贵合影 - 幽幽的日志 - 网易博客 引用 引用 人生的两和叁。。 - 艾伦的日志 - 网易博客 【引用】引用 [转] 久咳和口腔溃疡偏方 - pldlxn的日志 - 网易博客 引用 引用 成都女选手当着电视台和观众脱得精光 - 王晓亚的日志 - 网易博客 引用 引用 年龄和血压对照表 - 鹞子的日志 - 网易博客 太阳爆发4年来最强耀斑 或影响通讯 - 真光的日志 - 网易博客 引用 引用 引用 围巾 - wsd661982的日志 - 网易博客 引用 引用 引用 Annis - 進行中 - 夏天的日志 - 网易博客 引用 引用 引用 渔网针 - 夏天的日志 - 网易博客 引用 引用 引用 电影 - 革命一族的日志 - 网易博客 引用 引用 引用 小妞收袖山 - 梅兰竹菊的日志 - 网易博客 引用 二十四孝图 - 西林@126的日志 - 网易博客 引用 毛泽东主席亲属大全! - li237478@126的日志 - 网易博客 引用 工具大全 - li237478@126的日志 - 网易博客 引用 为人处世 - 下里巴人的日志 - 网易博客