我想编一个简单的纯Java的tcp,让两台计算机实现通讯,可就是老出问题,谁有简单的源码麻烦共享一下。不用太复杂,能看懂能运行就行,谢谢!!!

解决方案 »

  1.   

    import java.net.*;
    import java.io.*;
    /**
     * 客户端
     */
    public class Client {
    public static void main(String[] args) {
    try{
    //建立连接
    Socket socket = new Socket("127.0.0.1",10000);
    //发送数据
    OutputStream os = socket.getOutputStream();
    //接收数据
    InputStream is = socket.getInputStream();

    //服务器端反馈
    String s = "";
    //输入流
    BufferedReader br = new BufferedReader(
    new InputStreamReader(System.in));
    //循环处理
    while(!s.equals("回答错误,继续!游戏结束!")){
    System.out.println("请输入大或小:");
    //用户输入
    String input = br.readLine();
    //发送
    os.write(input.getBytes());
    os.flush();
    //获得服务器反馈
    byte[] b = new byte[100];
    int n = is.read(b);
    s = new String(b,0,n);
    System.out.println(s);
    }
    //关闭连接
    is.close();
    os.close();
    socket.close();

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

  2.   

    import java.io.*;
    import java.net.*;
    /**
     * 服务器
     */
    public class Server {
    public static void main(String[] args) {
    try{
    //建立服务器端socket
    ServerSocket ss = new ServerSocket(10000);

    System.out.println("服务器已启动:");

    while(true){
    //接受连接
    Socket s = ss.accept();

    //启动一个线程去处理
    ServerThread st = new ServerThread(s);
    st.start();
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    //关闭

    }}
      

  3.   

    import java.io.*;
    import java.net.*;
    import java.util.*;
    /**
     * 逻辑线程对象
     */
    public class ServerThread extends Thread {
    /**声明连接对象*/
    Socket s;
    /**声明输出流对象*/
    OutputStream os;
    /**声明输出流对象*/
    InputStream is;

    /**Random对象*/
    Random r;

    /**随机生成的数字*/
    int n;
     
    /**用户出错的次数*/
    int count = 0;

    public ServerThread(Socket s){
    this.s = s;
    //初始化输入输出流
    init();
    //初始化
    n = generateNumber();
    }

    private void init(){
    r = new Random();
    try{
    os = s.getOutputStream();
    is = s.getInputStream();
    }catch(Exception e){

    }
    }

    private int generateNumber(){
    return r.nextInt(6) + 1;
    }



    public void run(){
    //错误的次数不到3
    while(count < 3){
    System.out.println(n);
    try{
    //获得输入
    byte[] b = new byte[10];
    int num = is.read(b);
    //转换成字符串
    String s = new String(b,0,num);
    //比较
    if(s.equals("大")){
    //判断是否正确
    if(n > 3){
    //重新生成一个
    n = generateNumber();
    //发送反馈
    os.write("恭喜你,答对了!".getBytes());
    os.flush();
    }else{
    //重新生成一个
    n = generateNumber();
    //错误次数增加
    count++;
    //发送反馈
    os.write("回答错误,继续!".getBytes());
    os.flush();
    }
    }else if(s.equals("小")){
    //判断是否正确
    if(n  < 4){
    //重新生成一个
    n = generateNumber();
    //发送反馈
    os.write("恭喜你,答对了!".getBytes());
    os.flush();
    }else{
    //重新生成一个
    n = generateNumber();
    //错误次数增加
    count++;
    //发送反馈
    os.write("回答错误,继续!".getBytes());
    os.flush();
    }
    }else{ //输入错误
    os.write("格式错误,请输入大或小,继续!".getBytes());
    os.flush();
    }

    }catch(Exception e){
    e.printStackTrace();
    }
    }
    //游戏结束
    try{
    os.write("游戏结束!".getBytes());
    //关闭所有连接
    //is.close();
    //os.close();
    s.close();
    }catch(Exception e){

    }
    }
    }
      

  4.   

    或者大家帮我看看我的代码哪有问题
    发送:
    import java.io.DataOutputStream;
    import java.io.OutputStream;
    import java.net.*;public class TcpSend {
    public void send(String str) {
    try {
    Socket s = new Socket("192.168.8.230",6);
    OutputStream ops = s.getOutputStream();
    DataOutputStream dos = new DataOutputStream(ops);
    dos.writeUTF("My Message is :"+"\n"+str);
    dos.flush();
    dos.close();
    ops.close();
    s.close();

    catch (Exception e) {
    System.out.println("TcpSend");
    e.printStackTrace();
    }
    }
    }
    接受:
    import java.net.*;
    import java.io.InputStream;public class TcpRecv {
    public static void main(String [] args) throws Exception {
    try {
    ServerSocket server = new ServerSocket(6);
    Socket s = server.accept();
    InputStream ips = s.getInputStream();
    byte []buf = new byte[1024];
    int len = ips.read(buf);
    String str = new String(buf,0,len);
    System.out.println(str);
    s.close();
    server.close();
    } catch (Exception e) {
    System.out.println("TcpRecv");
    e.printStackTrace();
    }
    }
    }
    我的代码在本机运行时第一行收到的是乱码,其他正常,在两台计算机通信时根本收不到消息,不知道为什么。