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
沒有留言:
張貼留言