没有什么复杂的,我用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");
发送数据。
明白了把
----------------------------------------
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");
发送数据。
明白了把
OutputStream out = s.getOutputStream();改為:
BufferedReader is=new BufferedReader(s.getInputStream());
BufferedWriter out=new BufferedWriter(new OutputStream(System.out));
PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())), true);
BufferedReader is=new BufferedReader(new InputStreamReader(s.getInputStream()));
char ch;
while((ch = is.read()) != null)
{
System.out.print(ch);//或存入你的缓冲区内
}
...
while((ch = is.read()) != -1)用is.readLine()时,用null判断