DaytimeServer.java
import java.net.*;
import java.io.*;
// Chapter 6, Listing 2
public class DaytimeServer {
public static final int SERVICE_PORT = 2013;
public static void main(String args[]) {
try {
// Bind to the service port, to grant clients access to
// the TCP daytime service
ServerSocket server = new ServerSocket (SERVICE_PORT);
System.out.println ("Daytime service started");
// Loop indefinitely, accepting clients
for (;;) {
// Get the next TCP client
Socket nextClient = server.accept();
// Display connection details
System.out.println ("Received request from " +
nextClient.getInetAddress() + ":" + nextClient.getPort() );
// Don't read, just write the message
OutputStream out = nextClient.getOutputStream();
PrintStream pout = new PrintStream (out);
// Write the current date out to the user
pout.print( new java.util.Date() );
// Flush unsent bytes
out.flush();
// Close the connection
nextClient.close();
}
} catch (BindException be) {
System.err.println ("Service already running on port " + SERVICE_PORT );
} catch (IOException ioe) {
System.err.println ("I/O error - " + ioe);
}
}
}
DaytimeClient.java
import java.net.*;
import java.io.*;
// Chapter 6, Listing 1
public class DaytimeClient {
public static final int SERVICE_PORT = 2013;
public static void main(String args[]) {
// Check for hostname parameter
if (args.length != 1) {
System.out.println ("Syntax - DaytimeClient host");
return;
}
// Get the hostname of server
String hostname = args[0];
try {
// Get a socket to the daytime service
Socket daytime = new Socket (hostname, SERVICE_PORT);
System.out.println ("Connection established");
// Set the socket option just in case server stalls
daytime.setSoTimeout ( 2000 );
// Read from the server
BufferedReader reader = new BufferedReader (
new InputStreamReader(daytime.getInputStream()));
System.out.println ("Results : " + reader.readLine());
// Close the connection
daytime.close();
} catch (IOException ioe) {
System.err.println ("Error " + ioe);
}
}
}
server程式碼
Option Explicit
Private Sub cmdSend_Click()
Winsock1.SendData txtSend.Text
End Sub
Private Sub Command1_Click()
Label2.Caption = Winsock1.State
Winsock1.Bind 7777, Winsock1.LocalIP
End Sub
Private Sub Command2_Click()
Label3.Caption = Winsock1.State
End Sub
Private Sub Command3_Click()
Winsock1.Listen '監聽
Label4.Caption = Winsock1.State
End Sub
Private Sub Command4_Click()
Label5.Caption = Winsock1.State
End Sub
Private Sub Form_Load()
'Winsock1.LocalPort = 7777
'Winsock1.Listen 監聽
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData, vbString
txtReceived.Text = strData
If strData = "close" Then
Winsock1.Close
cmdSend.Enabled = False
Winsock1.Listen
End If
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID '改成接受
cmdSend.Enabled = True
End Sub
clint端
Private Sub bind_Click()
Label1.Caption = Winsock1.State
End Sub
Private Sub bind2_Click()
Label2.Caption = Winsock1.State
End Sub
Private Sub cmdConnect_Click()
Winsock1.LocalPort = 0 '以便自動產生Local Port
Winsock1.Connect "192.168.15.51" '設定改成您 Server 電腦的IP 號碼
Label3.Caption = Winsock1.State
End Sub
Private Sub cmdExit_Click()
Winsock1.SendData "close"
DoEvents
Winsock1.Close
Winsock1.LocalPort = 0
End Sub
Private Sub cmdSend_Click()
Winsock1.SendData txtOutput.Text
DoEvents
End Sub
Private Sub Form_Load()
Winsock1.RemotePort = 7777 '設定與Server端做Listen的Port相同
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Winsock1.State <> sckClosed Then
cmdExit_Click
End If
End Sub
Private Sub Winsock1_Connect()
If Winsock1.State = sckConnected Then
lstInput.AddItem "Connected! LocalPort =" & Winsock1.LocalPort _
& " RemptePort = " & Winsock1.RemotePort
End If
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim mydata As String
Winsock1.GetData mydata, vbString
lstInput.AddItem mydata
End Sub
Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
lstInput.AddItem Description
End Sub