[英]Sending and Receiving Data Through Sockets in Java
好的,就像標題所說的那樣,我對如何通過輸入和輸出流發送字符串感到困惑。 我正在制作一個基本的登錄服務器,希望能夠單擊“登錄”並具有登錄憑據以保存在服務器端。 這就是我所擁有的。
這是我的登錄按鈕的動作事件內的try塊:
try {
Socket socket = Client.s;
OutputStream dOut = Client.s.getOutputStream();
PrintWriter socketOut = new PrintWriter(dOut);
username = jTextField1.getText();
password = jPasswordField1.getText();
//System.out.println("Username: " + username);
//System.out.println("Password: " + password);
socketOut.println(username);
socketOut.flush();
socketOut.println(password);
socketOut.flush();
socketOut.println("Click");
socketOut.flush();
} catch (Exception e){
e.printStackTrace();
}
這是服務器端的我的代碼。 我試圖接收和存儲數據,但是它不起作用,我不太確定為什么。 我也有一些無用的循環,最終將它們刪除(忽略這些循環):
BufferedReader socketIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = socketIn.readLine();
while (buttonClicked == false){
int done = 0;
String messageType = socketIn.toString();
while(done == 0) {
switch(messageType)
{
case "username": // Type A
username = socketIn.toString();
System.out.println("username: " + username);
break;
case "password": // Type B
password = socketIn.toString();
System.out.println("Password: " + password);
break;
case "Click":
buttonClicked = true;
break;
}
請注意,我知道我缺少右括號,我只復制了部分代碼。
BufferedReader socketIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = socketIn.readLine();
while (buttonClicked == false){
int done = 0;
String messageType = socketIn.toString();
while(done == 0) {
switch(messageType)
{
case "username": // Type A
username = socketIn.toString();
System.out.println("username: " + username);
break;
case "password": // Type B
password = socketIn.toString();
System.out.println("Password: " + password);
break;
case "Click":
buttonClicked = true;
break;
}
您采用流的.toString()
( socketIn.toString();
),應使用str
。
BufferedReader socketIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = socketIn.readLine();
while (buttonClicked == false){
int done = 0;
while(done == 0) {
switch(str)
{
case "username": // Type A
username = str;
System.out.println("username: " + username);
break;
case "password": // Type B
password = str;
System.out.println("Password: " + password);
break;
case "Click":
buttonClicked = true;
break;
}
但是,無論如何,我認為這不是您想要的……我的意思是,當他通過“密碼”時,密碼就是密碼。
也許你想要
BufferedReader socketIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = socketIn.readLine();
while (buttonClicked == false){
int done = 0;
while(done == 0) {
switch(str)
{
case "username": // Type A
username = socketIn.readLine();
System.out.println("username: " + username);
break;
case "password": // Type B
password = socketIn.readLine();
System.out.println("Password: " + password);
break;
case "Click":
buttonClicked = true;
break;
}
從輸入中讀取新行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.