TCP/UDP聊天程序原理[00原创]
2007-05-15 23:41
295 查看
/*
* 文件名:TCPClient.java
* 环境: GNU/Linux Ubuntu 6.10 + Eclipse 3.2
* 功能:基于TCP协议的聊天程序Demo的客户端
* 作者:88250
* 日期:2007.4.10
* E-mail & MDN: DL88250@gmail.com
* QQ:845765
*/
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception {
String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(
System.in));
Socket clientSocket = new Socket("192.168.0.131", 4555);
DataOutputStream outToServer = new DataOutputStream(clientSocket
.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + ' ');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
/*
* 文件名:TCPServer.java
* 环境: GNU/Linux Ubuntu 6.10 + Eclipse 3.2
* 功能:基于TCP协议的聊天程序Demo的服务端
* 作者:88250
* 日期:2007.4.10
* E-mail & MDN: DL88250@gmail.com
* QQ:845765
*/
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception {
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(4556);
while (true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(
new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(
connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + ' ';
outToClient.writeBytes(capitalizedSentence);
}
}
}
/*
* 文件名:ChatClient.java
* 环境: GNU/Linux Ubuntu 6.10 + Eclipse 3.2
* 功能:基于UDP协议的聊天程序Demo的客户端
* 作者:88250
* 日期:2007.4.10
* E-mail & MDN: DL88250@gmail.com
* QQ:845765
*/
import java.net.*;
import java.io.*;
public class ChatClient
{
private DatagramSocket s;
private InetAddress hostAddress;
private byte[] buf = new byte[1000];
private DatagramPacket dp = new DatagramPacket(buf, buf.length);
// method explanation: if the input char is lowercase, transform it into uppercase,
// otherwise, transform it into lowercase
public static String transform(String src)
{
char[] array = src.toCharArray();
int temp = 0;
for (int i = 0; i < array.length; i++)
{
temp = (int) array[i];
if (temp <= 90 && temp >= 65)
{ // array[i] is uppercase char
array[i] = (char) (temp + 32);
}
else if (temp <= 122 && temp >= 97)
{ // array[i] is lowercase char
array[i] = (char) (temp - 32);
}
}
return String.valueOf(array);
}
// method explanation: Server constructor, implement read the Client
// information.
public ChatClient()
{
try
{
// use the constructor to create any Socket by any able prot.
s = new DatagramSocket();
// get self IP address.
hostAddress = InetAddress.getByName("192.168.0.132");
while (true)
{
String outMessage = "";
// read input.
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
try
{
outMessage = stdin.readLine();
}
catch (IOException ie)
{
System.err.println("IO error!");
}
// if input "bye" then, exit program.
if (outMessage.equals("bye"))
{
break;
}
outMessage = transform(outMessage); // transform upper/lowercase
String outString = "Client say:" + outMessage;
byte[] buf = outString.getBytes();
// pack data, send data.
DatagramPacket out = new DatagramPacket(buf, buf.length,
hostAddress, ChatServer.PORT);
s.send(out);
// wait for the return for Server.
s.receive(dp);
String rcvd = new String(dp.getData(), 0, dp.getLength())
+ ", form address: /" + dp.getAddress() + ": "
+ dp.getPort();
System.out.println(rcvd);
}
}
catch (UnknownHostException e)
{
System.out.println("Can't open socket!");
System.exit(1);
}
catch (SocketException e)
{
System.out.println("Can't open socket!");
e.printStackTrace();
System.exit(1);
}
catch (IOException e)
{
System.err.println("Communication error!");
e.printStackTrace();
System.exit(1);
}
catch (Exception e)
{
System.err.println("Commnuication error!");
e.printStackTrace();
System.exit(1);
}
System.out.println("ChatClient over!");
}
public static void main(String[] args)
{
new ChatClient();
}
}
/*
* 文件名:ChatServer.java
* 环境: GNU/Linux Ubuntu 6.10 + Eclipse 3.2
* 功能:基于UDP协议的聊天程序Demo的服务端
* 作者:88250
* 日期:2007.4.10
* E-mail & MDN: DL88250@gmail.com
* QQ:845765
*/
import java.net.*;
import java.io.*;
import java.util.*;
public class ChatServer
{
static final int PORT = 7007; // set the Server port.
private byte[] buf = new byte[1000];
private DatagramPacket dgp = new DatagramPacket(buf, buf.length);
private DatagramSocket sk;
// method explanation: if the input char is lowercase, transform it into uppercase,
// otherwise, transform it into lowercase
public static String transform(String src)
{
char[] array = src.toCharArray();
int temp = 0;
for (int i = 0; i < array.length; i++)
{
temp = (int) array[i];
if (temp <= 90 && temp >= 65)
{ // array[i] is uppercase char
array[i] = (char) (temp + 32);
}
else if (temp <= 122 && temp >= 97)
{ // array[i] is lowercase char
array[i] = (char) (temp - 32);
}
}
return String.valueOf(array);
}
// method explanation: Server constructor, implement read the Client
// information.
public ChatServer()
{
try
{
// implement Datagram.
sk = new DatagramSocket(PORT);
System.out.println("Server started");
while (true)
{
// wait for information.
sk.receive(dgp);
// get information.
String rcvd = new String(dgp.getData(), 0, dgp.getLength())
+ ", form address: " + dgp.getAddress() + ", prot: "
+ dgp.getPort();
System.out.println(rcvd);
String outMessage = "";
// read input.
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
try
{
outMessage = stdin.readLine();
}
catch (IOException ie)
{
System.err.println("IO error!");
}
outMessage = transform(outMessage); // transform upper/lowercase
String outString = "Server say: " + outMessage;
// copy character to buffer.
byte[] buf = outString.getBytes();
// pack data, send information.
DatagramPacket out = new DatagramPacket(buf, buf.length, dgp
.getAddress(), dgp.getPort());
sk.send(out);
}
}
catch (SocketException e)
{
System.err.println("Can't open socket");
System.exit(1);
}
catch (IOException e)
{
System.err.println("Communication error");
e.printStackTrace();
System.exit(1);
}
}
public static void main(String[] args)
{
new ChatServer();
}
}
* 文件名:TCPClient.java
* 环境: GNU/Linux Ubuntu 6.10 + Eclipse 3.2
* 功能:基于TCP协议的聊天程序Demo的客户端
* 作者:88250
* 日期:2007.4.10
* E-mail & MDN: DL88250@gmail.com
* QQ:845765
*/
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception {
String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(
System.in));
Socket clientSocket = new Socket("192.168.0.131", 4555);
DataOutputStream outToServer = new DataOutputStream(clientSocket
.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + ' ');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
/*
* 文件名:TCPServer.java
* 环境: GNU/Linux Ubuntu 6.10 + Eclipse 3.2
* 功能:基于TCP协议的聊天程序Demo的服务端
* 作者:88250
* 日期:2007.4.10
* E-mail & MDN: DL88250@gmail.com
* QQ:845765
*/
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception {
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(4556);
while (true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(
new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(
connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + ' ';
outToClient.writeBytes(capitalizedSentence);
}
}
}
/*
* 文件名:ChatClient.java
* 环境: GNU/Linux Ubuntu 6.10 + Eclipse 3.2
* 功能:基于UDP协议的聊天程序Demo的客户端
* 作者:88250
* 日期:2007.4.10
* E-mail & MDN: DL88250@gmail.com
* QQ:845765
*/
import java.net.*;
import java.io.*;
public class ChatClient
{
private DatagramSocket s;
private InetAddress hostAddress;
private byte[] buf = new byte[1000];
private DatagramPacket dp = new DatagramPacket(buf, buf.length);
// method explanation: if the input char is lowercase, transform it into uppercase,
// otherwise, transform it into lowercase
public static String transform(String src)
{
char[] array = src.toCharArray();
int temp = 0;
for (int i = 0; i < array.length; i++)
{
temp = (int) array[i];
if (temp <= 90 && temp >= 65)
{ // array[i] is uppercase char
array[i] = (char) (temp + 32);
}
else if (temp <= 122 && temp >= 97)
{ // array[i] is lowercase char
array[i] = (char) (temp - 32);
}
}
return String.valueOf(array);
}
// method explanation: Server constructor, implement read the Client
// information.
public ChatClient()
{
try
{
// use the constructor to create any Socket by any able prot.
s = new DatagramSocket();
// get self IP address.
hostAddress = InetAddress.getByName("192.168.0.132");
while (true)
{
String outMessage = "";
// read input.
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
try
{
outMessage = stdin.readLine();
}
catch (IOException ie)
{
System.err.println("IO error!");
}
// if input "bye" then, exit program.
if (outMessage.equals("bye"))
{
break;
}
outMessage = transform(outMessage); // transform upper/lowercase
String outString = "Client say:" + outMessage;
byte[] buf = outString.getBytes();
// pack data, send data.
DatagramPacket out = new DatagramPacket(buf, buf.length,
hostAddress, ChatServer.PORT);
s.send(out);
// wait for the return for Server.
s.receive(dp);
String rcvd = new String(dp.getData(), 0, dp.getLength())
+ ", form address: /" + dp.getAddress() + ": "
+ dp.getPort();
System.out.println(rcvd);
}
}
catch (UnknownHostException e)
{
System.out.println("Can't open socket!");
System.exit(1);
}
catch (SocketException e)
{
System.out.println("Can't open socket!");
e.printStackTrace();
System.exit(1);
}
catch (IOException e)
{
System.err.println("Communication error!");
e.printStackTrace();
System.exit(1);
}
catch (Exception e)
{
System.err.println("Commnuication error!");
e.printStackTrace();
System.exit(1);
}
System.out.println("ChatClient over!");
}
public static void main(String[] args)
{
new ChatClient();
}
}
/*
* 文件名:ChatServer.java
* 环境: GNU/Linux Ubuntu 6.10 + Eclipse 3.2
* 功能:基于UDP协议的聊天程序Demo的服务端
* 作者:88250
* 日期:2007.4.10
* E-mail & MDN: DL88250@gmail.com
* QQ:845765
*/
import java.net.*;
import java.io.*;
import java.util.*;
public class ChatServer
{
static final int PORT = 7007; // set the Server port.
private byte[] buf = new byte[1000];
private DatagramPacket dgp = new DatagramPacket(buf, buf.length);
private DatagramSocket sk;
// method explanation: if the input char is lowercase, transform it into uppercase,
// otherwise, transform it into lowercase
public static String transform(String src)
{
char[] array = src.toCharArray();
int temp = 0;
for (int i = 0; i < array.length; i++)
{
temp = (int) array[i];
if (temp <= 90 && temp >= 65)
{ // array[i] is uppercase char
array[i] = (char) (temp + 32);
}
else if (temp <= 122 && temp >= 97)
{ // array[i] is lowercase char
array[i] = (char) (temp - 32);
}
}
return String.valueOf(array);
}
// method explanation: Server constructor, implement read the Client
// information.
public ChatServer()
{
try
{
// implement Datagram.
sk = new DatagramSocket(PORT);
System.out.println("Server started");
while (true)
{
// wait for information.
sk.receive(dgp);
// get information.
String rcvd = new String(dgp.getData(), 0, dgp.getLength())
+ ", form address: " + dgp.getAddress() + ", prot: "
+ dgp.getPort();
System.out.println(rcvd);
String outMessage = "";
// read input.
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
try
{
outMessage = stdin.readLine();
}
catch (IOException ie)
{
System.err.println("IO error!");
}
outMessage = transform(outMessage); // transform upper/lowercase
String outString = "Server say: " + outMessage;
// copy character to buffer.
byte[] buf = outString.getBytes();
// pack data, send information.
DatagramPacket out = new DatagramPacket(buf, buf.length, dgp
.getAddress(), dgp.getPort());
sk.send(out);
}
}
catch (SocketException e)
{
System.err.println("Can't open socket");
System.exit(1);
}
catch (IOException e)
{
System.err.println("Communication error");
e.printStackTrace();
System.exit(1);
}
}
public static void main(String[] args)
{
new ChatServer();
}
}
相关文章推荐
- TCP、UDP练习题 (UDP聊天程序、TCP上传文本文件和图片文件)
- 利用TCP和UDP协议,实现基于Socket的小聊天程序
- TCP、UDP的C/S程序工作流程,原理
- day23网络编程UDP,TCP。IP。DatagramSocket。DatagramPacket。聊天程序。TCP传输。文本转换服务器。
- java 网络编程【6】 用UDP编写网络聊天程序 以及 TCP编程实例
- 基于TCP与UDP的简单聊天程序
- 利用TCP和UDP协议,实现基于Socket的小聊天程序(初级版)
- 使用UDPClient 编写聊天程序
- QT UDP聊天小程序
- JAVA实现UDP组播聊天程序
- 基于UDP的聊天程序
- Java—实现区域网内聊天(TCP与UDP)
- UDP Socket基本思路小程序(2) 多线程简单聊天程序
- java网络编程之Tcp协议下的聊天小程序
- 简单模拟qq聊天程序(TCP版)
- C# UDP 网络聊天程序
- Socket,TCP,UDP,HTTP基本通信原理和OC版本Demo
- 基于 UDP 的聊天程序代码例子
- UDP实现简单聊天程序
- UDP聊天程序补充