Java的Socket由Tcp和Udp两种,现在一般都是用Tcp协议的,因为他是一个全双工的可靠的连接;
Java Scoket客户端程序如下:
import java.io.*;
import java.net.*;
public class MyClient {
public static void main(String[] args) {
// 这里先强迫用户输入用户名,调用client(str)方法。
String str = "";
try {
while (str.length() < 1) {
System.out.println("请输入您的名字");
str = new DataInputStream(new BufferedInputStream(System.in))
.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
MyClient.client(str);
}
public static void client(String userName) {
try {
Socket s = new Socket(InetAddress.getByName("127.0.0.1"), 9527);// 套接字的IP地址和端口号
OutputStream os = s.getOutputStream();// 得到输出流
InputStream is = s.getInputStream();
byte[] Name = userName.getBytes("ISO-8859-1"); // 这个是为了中文乱码问题
os.write(Name);// 向服务器发送消息
byte[] serverSay = new byte[100];
int len = is.read(serverSay);// 接受服务器消息
System.out.println(new String(serverSay, 0, len));// 客户端控制台显示服务器返回的信息
is.close();
os.close();
s.close();// 记住一定要关闭这些输入,输出流和套接字
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务端程序:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
//这个简单的socket服务器端主要是说句Hello XXX,采用多线程实现
public class MyServer {
private Socket s;
private boolean keepRun = true;
private OutputStream os;
private InputStream is;
public static void main(String[] args) {
MyServer.server();// main入口,一运行机器,就开通server服务。
}
public MyServer(Socket s) {
this.s = s;
keepRun = true;
try {
s.setSoTimeout(3000);// 设置接收超时
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run() {
try {
os = s.getOutputStream();
is = s.getInputStream();
while (keepRun) {
Thread.sleep(1000);
byte[] buf = new byte[1024];
System.out.println("客户端接入");
is.read(buf);// 从客户端读取消息
String userName = new String(buf);
if (userName.length() > 0)
os.write(userName.getBytes());// 返回给客户端的欢迎信息
}
System.out.println("Socket连接关闭");
keepRun = false;
os.close();
is.close();
s.close();
} catch (Exception e) {
System.out.println("Socket关闭");
keepRun = false;
try {
os.close();
is.close();
s.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// e.printStackTrace();
}
}
public static void server() {
try {
final ServerSocket ss = new ServerSocket(9527); // 服务器的套接字,端口为9527
new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
while (true) {
Socket s = null;
try {
System.out.println("zhixing1");
s = ss.accept();
System.out.println("zhixing2");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Socket接入");
new MyServer(s).run(); // 用户一进来就运行一个线程
}
}
}.start();
System.out.println("zhixing");
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
Java Socket编程.pdf Java Socket编程.pdf Java Socket编程.pdf
java socket编程 java网络编程 课件 java socket编程 java网络编程 课件
import java.io.*; import java.net.*; import java.util.*; import java.lang.*; public class Server extends ServerSocket { private static ArrayList User_List = new ArrayList(); private static ...
java socket网络编程,包括服务与客户端,多线程支持多客户端同时在线。
java socket 编程,Java socket 编程实例,对于初学者是一个非常好的东西,对于有过经验的是非常好的更深了解的东西,希望大家共同进步
浅出Java Socket编程浅出Java Socket编程浅出Java Socket编程浅出Java Socket编程浅出Java Socket编程
Java Socket 编程 html教程
java socket 编程文档
java socket 实现简单的客户端和服务端通信
java Socket 编程配套源码
基于TCP和UDP的socket编程,给出了最简单的示例代码。 相关博文地址: http://blog.csdn.net/wintys/archive/2008/12/15/3525643.aspx http://blog.csdn.net/wintys/archive/2008/12/15/3525619.aspx
本程序用socket编程实现发送邮件的功能,并测试成功
Java socket编程实例.pdf
Java Socket编程笔记_动力节点Java学院整理,动力节点口口相传的黄埔军校
java Socket 编程
浅谈Socket编程及Java实现,学习java socket编程
Java Socket编程