자바 소켓을 사용하여 채팅 응용 프로그램을 작성하려고합니다. 서버가 클라이언트의 첫 번째 단계로 들어 오면 클라이언트의 포트에서 클라이언트가 수신하는 개념입니다. 사용자 이름과 클라이언트의 이름으로 저장합니다. 링크 소켓은 sockettuple
(사용자 이름이 string이고 소켓이 소켓 임) .. 저장 후 클라이언트가 연결됩니다. 서버가 listenthread
과 의 통신을 클라이언트에서 수신 대기합니다. 소켓의 주 스레드에서 발생하고 서버에 쓰기 별도의 스레드에서 소켓 튜플의 저장이 잘 발생 하지만 메시지를 보내는에 f 클라이언트 Socketclosed exception
에 롬 서버는 에 모두 서버 쓰기를 발생하고 클라이언트의는 ......Java 소켓 예외 소켓
// mainserver.java
import java.net.*;
import java.io.*;
class listenthread extends Thread{
ServerSocket mserver;
Socket link,targetsocket;
String user,targetuser;
sockettuple targettuple,starray[]= new sockettuple[10];
int i=0;
public listenthread(ServerSocket mserver){
try{
System.out.println("Inside Listenthread constructor");
this.mserver=mserver;
}
catch (Exception e){
System.out.println("Exception inside listenthread constructor"+e);
}
}
public void run(){
try{
while(true){
System.out.println("Listening.....");
link=mserver.accept();
System.out.println("Accepted");
BufferedReader intosockb = new BufferedReader(new InputStreamReader(link.getInputStream()));
user= intosockb.readLine();
System.out.println(user + "Accepted");
starray[i] =new sockettuple(link,user);
i++;
System.out.println(starray[i-1].username);
new servwrite(link).start();
intosockb.close();
}
}
catch(Exception e){
System.out.println("Exception inside listenthread run "+e);
e.printStackTrace();
}
}
}
class servwrite extends Thread{
Socket link;
public servwrite(Socket link){
this.link=link;
}
public void run(){
try{
PrintStream fromserv=new PrintStream(link.getOutputStream());
fromserv.print("You are connected...Enter the target user:");
}
catch(Exception e){
System.out.println("Exception inside run of serv write thread..."+e);
}
}
}
public class mainserver {
public static void main(String args[]){
try{
ServerSocket Servermain= new ServerSocket(4579);
System.out.println(" Server main Socket created");
new listenthread(Servermain).start();
}
catch(Exception e){
System.out.println("Exception inside main "+e);
}
}
}
//Clientmenu.java
import java.net.*;
import java.io.*;
class clientread extends Thread{
Socket client;
BufferedReader key=null;
public clientread(Socket client){
try{
this.client=client;
key= new BufferedReader(new InputStreamReader(client.getInputStream()));
}
catch(Exception e){
System.out.println("Exception inside client read thread's constructor");
e.printStackTrace();
}
}
public void run(){
try{
System.out.println("First line inside run of client read thread before cmsg readline");
String cmsg= key.readLine();
System.out.println(cmsg);
}
catch(Exception e){
System.out.println("Exception inside run of client read thread..."+e);
e.printStackTrace();
}
}
}
public class Clientmenu {
public static void main(String args[]){
String user=" ";
String targetuser="";
Socket newclient;
BufferedReader fromtheserv;
try{
newclient = new Socket("127.0.0.1",4579);
System.out.print("Enter username:");
BufferedReader key= new BufferedReader(new InputStreamReader(System.in));
user=key.readLine();
PrintStream fromclientp=new PrintStream(newclient.getOutputStream());
fromclientp.print(user);
new clientread(newclient).start();
fromclientp.close();
}
catch(Exception e){
System.out.println("Exception inside CLientmenu "+e);
}
}
}
전체 코드를 덤핑하고 해결하도록 요청하는 것은 여기에 질문하는 좋은 방법이 아닙니다. 관련 코드 만 게시하십시오. –