没有什么复杂的,我用Java做服务端,起一个监听。然后客户端用C写一个,连接指定的端口,一发一收,没什么特别的地方。给你一段我编的代码:Java
----------------------------------------
package pkserver;import java.net.*;
import java.io.*;
import java.util.*;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */public class PKServer {  public PKServer() {
    try {
      ServerSocket ss = new ServerSocket(3000);
      System.out.println("Waiting for conncetion...");
      Socket s = ss.accept();
      System.out.println("Accept connection!");
      InputStream in = s.getInputStream();
      OutputStream out = s.getOutputStream();      byte[] inData = new byte[100];
      in.read(inData);
      System.out.println("Recv: ");
      for(int i=0; i<inData.length; i++) {
        System.out.print(inData[i]);
      }
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  public static void main(String[] args) {
    PKServer pkServer = new PKServer();
  }
}C(我是用VC做的,比较长节选了一些关键的)
------------------------------------------------------------------
WSADATA wsd;
SOCKET sConnect;
LONG lPort = 3000; char hostip[12] = "172.20.54.9";
//unsigned char hostip[20] = "";
//memcpy( hostip, strIp, sizeof(strIp)); struct sockaddr_in ServerHostAddr;  //Server Address...
if (WSAStartup( MAKEWORD(2, 2), &wsd ) != 0)
AfxMessageBox("Failed INIT \n");
sConnect = socket( AF_INET, SOCK_STREAM, 0 );
ServerHostAddr.sin_family = AF_INET;
ServerHostAddr.sin_port = htons( (u_short)lPort );
ServerHostAddr.sin_addr.s_addr = inet_addr( hostip );
if( connect( sConnect, (struct sockaddr*)&ServerHostAddr, sizeof(ServerHostAddr) ) == SOCKET_ERROR)
AfxMessageBox("Connect Failed\n");这部分建立连接,够烦的把 char data[10] = "54321";
if( send(sConnect, data, sizeof(data), 0 ) == SOCKET_ERROR )
AfxMessageBox("Message Sending Error...");
else
AfxMessageBox("Send Succ");

发送数据。
明白了把

解决方案 »

  1.   

    InputStream in = s.getInputStream();
          OutputStream out = s.getOutputStream();改為:
    BufferedReader is=new BufferedReader(s.getInputStream());
    BufferedWriter out=new BufferedWriter(new OutputStream(System.out));
      

  2.   

    out还是用这个比较好吧
    PrintWriter out = new PrintWriter(
            new BufferedWriter(
              new OutputStreamWriter(
                socket.getOutputStream())), true);
      

  3.   

    ...
    BufferedReader is=new BufferedReader(new InputStreamReader(s.getInputStream()));
    char ch;
    while((ch = is.read()) != null)
    {
        System.out.print(ch);//或存入你的缓冲区内
    }
    ...
      

  4.   

    对不起,写错了
    while((ch = is.read()) != -1)用is.readLine()时,用null判断