client发的请求接收返回信息时用send来接收,其余的由receive来接收,怎么改?求大神帮忙

问题描述

client发的请求接收返回信息时用send来接收,其余的由receive来接收,怎么改?求大神帮忙

sever的请求都友client的receive来接收,client发的请求接收返回信息时用send来接收,怎么改下?求大神帮忙,我只会大概写了下代码,菜鸟急需用!


 package test;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

import org.json.JSONArray;
import org.json.JSONObject;

public class Client {
    private Socket client;

    public Client() {
        try {
            client = new Socket("localhost", 8080);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void send() {
        try {
            OutputStream out = client.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8");
            PrintWriter pw = new PrintWriter(osw, true);

            JSONObject message = new JSONObject();
            JSONObject header = new JSONObject();
            header.put("cposId", "A00C0001");
            header.put("timestamp", "1432199344");
            header.put("hash", "c83c2c7057e377aa68bf736ab0107e45");
            message.put("header", header);
            message.put("functionName", "addOrder");
            JSONObject orderData = new JSONObject();
            orderData.put("transCode", "TC12345");
            orderData.put("transAmount", 40);
            orderData.put("member",
                    (new JSONObject()).put("cardId", "12345").put("cellphone", "11111111111").put("balance", 1000));
            orderData.put("ticketDetails", (new JSONArray()).put((new JSONObject()).put("movieName", "My Movie")
                    .put("schedule", "2015-10-10 05:00:00").put("amount", 40).put("vipAmount", 30).put("quantity", 2)));
            message.put("data", orderData);

            pw.println(message);
            pw.flush();

            InputStream is = client.getInputStream();
            System.out.println("服务端已连接!");
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));

            while (true) {
                String info = reader.readLine();
                if (info != null) {
                    System.out.println("来自服务器的消息:" + info);
                    Scanner scanner = new Scanner(System.in);
                    String s = scanner.nextLine();
                    pw.println(s);
                    pw.flush();

                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (client != null) {
                try {
                    client.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

    }

    public void receive() {
        try {
            InputStream is = client.getInputStream();
            System.out.println("服务端已连接!");

            OutputStream out;
            out = client.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(out, "UTF-8");
            PrintWriter pw = new PrintWriter(osw, true);
            pw.println("可以随时接收请求了!");

            pw.flush();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            while (true) {
                String info = reader.readLine();
                if (info != null) {
                    System.out.println("来自服务器的消息:" + info);
                    String s = "";
                    switch (info) {
                    case "A":
                        s = "卡余额89.00元";
                    case "B":
                        s = "nothing";
                    }
                    pw.println(s);
                    pw.flush();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (client != null) {
                try {
                    client.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        Client client = new Client();
        client.send();
        client.receive();
    }
}

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {
    private ServerSocket serverSocket;

    public Server() {
        try {
            serverSocket = new ServerSocket(8080);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void receive() {
        try {
            System.out.println("等待客户端连接。。。");
            Socket socket = serverSocket.accept();
            System.out.println("客户端已连接!");
            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is, "UTF-8");
            BufferedReader br = new BufferedReader(isr);

            OutputStream out = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(out, "UTF-8"), true);

            while (true) {
                String info = br.readLine();
                if (info.indexOf("addOrder") != -1) {
                    System.out.println("来自客户端的消息:" + info);
                    writer.println("。。。订单已添加成功!");
                    writer.flush();
                } else if (info.indexOf("a") != -1) {
                    writer.println("a会员充值");
                    System.out.println("来自客户端的消息:" + info);
                    writer.flush();
                } else {
                    writer.println("查询会员卡");
                    Scanner scanner = new Scanner(System.in);
                    String s = scanner.nextLine();
                    System.out.println("来自客户端的消息:" + info);
                    writer.flush();
                }

            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void send() {
        try {
            System.out.println("等待客户端连接。。。");
            Socket socket = serverSocket.accept();
            System.out.println("客户端已连接!");
            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is, "UTF-8");
            BufferedReader br = new BufferedReader(isr);

            OutputStream out = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(out, "UTF-8"), true);

            while (true) {
                String info = br.readLine();
                Scanner scanner = new Scanner(System.in);
                String s = scanner.nextLine();
                writer.println(s);
                System.out.println("来自客户端的消息:" + info);
                writer.flush();

            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Server server = new Server();
        server.receive();
        server.send();
    }
}

解决方案

这是最简单的网络编程的问题!
可以参考:http://blog.csdn.net/aiynmimi/article/details/47303035

解决方案二:

这是最简单的网络编程的问题!
可以参考:http://blog.csdn.net/aiynmimi/article/details/47303035

时间: 2024-08-07 15:24:28

client发的请求接收返回信息时用send来接收,其余的由receive来接收,怎么改?求大神帮忙的相关文章

js排序时因为tbody中有2个TR,所以排序不成功,求大神帮忙处理下(已哭)

问题描述 js排序时因为tbody中有2个TR,所以排序不成功,求大神帮忙处理下(已哭) JS: /转换器,将列的字段类型转换为可以排序的类型:String,int,float function convert(sValue, sDataType) { //(值,类型(int ,date ,float,String)) switch(sDataType) { //选择类型 case "int": return parseInt(sValue); //返回int型 case "

ios-iOS 获取手机通讯录遍历时,只有一个联系人(获取到了所有联系人,可是遍历时出问题了)求大神帮忙

问题描述 iOS 获取手机通讯录遍历时,只有一个联系人(获取到了所有联系人,可是遍历时出问题了)求大神帮忙 #import "AddressBook.h" #import "pinyin.h"//将汉字转换成英文 #import "Person.h"//将联系人信息存储成一个一个的person //存储通讯录的类 @interface AddressBook () @end @implementation AddressBook static A

停止ajax请求-ajax异步处理时,想要停止后台处理该如何实现,求大神帮忙

问题描述 ajax异步处理时,想要停止后台处理该如何实现,求大神帮忙 js中有个方法 $.ajax({ //一个异步的方法,且很耗时 url:..., ... async:true, success : function(data){ ? ?//todo:..... ?} }) 在这个方法被调用的时候,我点击一个按钮,想跳转到其他页面(window.location.href = ".../a.html"),但是页面一直无法跳转 请问,在跳转时该如何停止ajax的请求,直接跳到下一页?

socket客户端异常-客户端第二次输入用户名时,会提示主线程由于软件引起连接中断异常,求大神分析原因!

问题描述 客户端第二次输入用户名时,会提示主线程由于软件引起连接中断异常,求大神分析原因! /* 需求: 在客户端,输入用户名,如果该用户名在系统数据库存在,则提示欢迎登陆,如果不存在,则提示用户不存在,每个IP限制登陆三次/ import java.io.; import java.net.*; class LoginClient { public static void main(String[] args)throws Exception { Socket s=new Socket("19

Android http client response500错误,求大神帮忙看看代码!

问题描述 Android http client response500错误,求大神帮忙看看代码! http://121.42.195.113/usay/register.jsp服务器这里没错啊....但不知道为什么放到安卓上就不行 package com.example.demo_jsom1; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http

struct-自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急.

问题描述 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. 自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急. #include #include typedef struct tnode Tnode; struct tnode { Tnode *left; Tnode *right; int data; }; Tnode *new_tnode(int data) { Tnode *new = malloc(sizeof(Tn

byte-Byte[]转Bitmap时图片变花,求大神帮忙

问题描述 Byte[]转Bitmap时图片变花,求大神帮忙 Android写了一个相机,但是photo = BitmapFactory.decodeByteArray(data 0 data.length)时候图片变花了,求大神帮忙,急急急 解决方案 遇到过同样的问题,我的问题是在处理data[]数据转Bitmap后,将图片旋转了90°,后来连续拍照后,保存的图片看上去像有很多张重叠在一起的,后来找了很久,发现是旋转的问题: Matrix matrix = new Matrix(); matri

用exe4j生成exe时出错 求大神帮忙

问题描述 用exe4j生成exe时出错 求大神帮忙 java.lang.ExceptionInInitializerError at init.ContextFactory.getContext(ContextFactory.java:17) at window.ExitDialog.(ExitDialog.java:38) at window.ExitDialog.main(ExitDialog.java:96) at sun.reflect.NativeMethodAccessorImpl.

c++-C++ 求大神帮忙修改段代码,信息管理系统,把原有的类拆成四个派生类

问题描述 C++ 求大神帮忙修改段代码,信息管理系统,把原有的类拆成四个派生类 http://pan.baidu.com/s/1o69SUWq 这里面是头文件和源文件和说明 求大神帮帮忙 解决方案 链接不存在了 提供一个思路吧,也就把工作细分化.把功能具体化.举一个简单例子 假如有一个图书管理类. 你可以拆分为:借书类.还书类.查书类等,